refactored user_form