user model refactoring