work in progress. come back in a month.