refactor UserManager