refactored UserManager