refactored into composible FieldDatas