split form-controller into subclasses