User model refactoring