a good bit of work to get the right structure in there