restructure ; create Field class