Broke changeEmail out to its own service and made some general tidy ups as suggested in Katos comments