 		delete options.body.status
 		options.body.email_address = newEmail
 		mailchimp.request options, (err)->
-			if err? and err?.message?.indexOf("merge fields were invalid") 
-				logger.log {oldEmail, newEmail}, "unable to change email in newsletter as user has not subscribed"
+			if err? and err?.message?.indexOf("merge fields were invalid") != -1
+				logger.log {oldEmail, newEmail}, "unable to change email in newsletter, user has never subscribed"
 				return callback()
-			# if the user has unsubscribed mailchimp will error on email address change
-			else if err? and err?.message?.indexOf("could not be validated") == -1
-				logger.err err:err, "error changing email in newsletter"
+			else if err? and err?.message?.indexOf("could not be validated") != -1
+				logger.log {oldEmail, newEmail}, 
+					"unable to change email in newsletter, user has previously unsubscribed or new email already exist on list"
+				return callback(err)
+			else if err?
+				logger.err {err, oldEmail, newEmail}, "error changing email in newsletter"
 				return callback(err)
 			else
 				logger.log "finished changing email in the newsletter"

		options = buildOptions(user, false)
		mailchimp.request options, (err)->
			if err?
				logger.err err:err, "error unsubscribing person to newsletter"
			else
				logger.log user:user, "finished unsubscribing user to the newsletter"
			callback(err)


	subscribe: (user, callback = () ->)->
		options = buildOptions(user, true)
		logger.log options:options, user:user, email:user.email, "subscribing user to the mailing list"
		mailchimp.request options, (err)->
			if err?
				logger.err err:err, user:user, "error subscribing person to newsletter"
			else
				logger.log user:user, "finished subscribing user to the newsletter"
			callback(err)
