made some inner classes public for datafield access