completed User class