I scrapped all the work I did yesterday: sometimes you need to try a few things before the correct answer becomes apparent. The new 'DataBuilder' API which I wrote this evening is exactly what I need. I will start testing and building a mini-Dao module wrapper around it next.