Refactoring to use ImmutableUser, CreateUserParameter and UserDTO