moved sign up logic to a service object; accompanying specs