make this throw a better exception if user already exists, and then change client to handle it