refactoring UserManager