improved error messages, moved validation to User entity