refactored form hooks into separate classes