refactored Form