completed basic user model