Yeah the various columns collections need another abstraction to drop the assumption that colName=fieldName
PS - nice solution, BTW.