refactor user_controller