finished basic user model