I've seen your compromise now and it works pretty well, I think I prefer having the select id/column id mapping done in a single object rather than across multiple functions but it does the same job :)