refactoring and form