separate form/fields abstractions