refactored UserController