FEATURE: make form field an abstract class and add validation to subclasses