refactored User Model