diff --git messaging.module messaging.module
index de88ceb..42acbc0 100644
--- messaging.module
+++ messaging.module
@@ -1283,3 +1283,13 @@ function messaging_user_format_name($account, $html = FALSE) {
   $account = messaging_user_object($account);
   return $html ? theme('username', $account) : check_plain($account->name);
 }
+
+/**
+ * Update the message destination for a user.
+ */
+function messaging_update_destination($uid, $type, $destination) {
+  // Update destination of this user
+  db_query("UPDATE {messaging_destination} SET address = '%s' WHERE uid = %d AND type = '%s'", $destination, $uid, $type);
+  // Update uid for destinations with this mail
+  db_query("UPDATE {messaging_destination} SET uid = %d WHERE uid = 0 AND type = '%s' AND address = '%s'", $uid, $type, $destination);
+}
diff --git messaging_mail/messaging_mail.module messaging_mail/messaging_mail.module
index 6c758a9..be94124 100644
--- messaging_mail/messaging_mail.module
+++ messaging_mail/messaging_mail.module
@@ -76,14 +76,14 @@ function messaging_mail_messaging($op, $type = NULL) {
 
 /**
  * Implementation of hook_user().
- *
- * Adds fieldset and default sending method setting.
  */
-function messaging_mail_user($type, $edit, &$user, $category = NULL) {
+function messaging_mail_user($type, $edit, &$account, $category = NULL) {
   switch ($type) {
     case 'update':
       // Claim user mail address if in destinations table
-      messaging_mail_update_user($user);
+      if ($account->status && !empty($edit['mail']) && $edit['mail'] != $account->mail) {
+        messaging_update_destination($account->uid, 'mail', $edit['mail']);
+      }
   }
 }
 
@@ -101,21 +101,6 @@ function messaging_mail_methods() {
 }
 
 /**
- * Update destinations when a user account is updated, created
- * 
- * The destinations for that mail account will be assigned to the user
- */
-function messaging_mail_update_user($account) {
-  if ($account->status) {
-    // Update mail for destinations of this user
-    db_query("UPDATE {messaging_destination} SET address = '%s' WHERE uid = %d AND type = 'mail'", $account->mail, $account->uid);
-    // Update uid for destinations with this mail
-    db_query("UPDATE {messaging_destination} SET uid = %d WHERE uid = 0 AND type = 'mail' AND address = '%s'", $account->uid, $account->mail);
-  }
-}
-
-
-/**
  * Send mail message to user account
  * 
  * This is a callback function that will be invoked from messaging delivery methods
@@ -141,4 +126,4 @@ function messaging_mail_send_msg($address, $message, $params = array()) {
  */
 function messaging_mail_disable() {
   messaging_method_disable('mail');
-}
\ No newline at end of file
+}
diff --git messaging_sms/messaging_sms.module messaging_sms/messaging_sms.module
index 09f1607..1adde62 100644
--- messaging_sms/messaging_sms.module
+++ messaging_sms/messaging_sms.module
@@ -31,7 +31,6 @@ function messaging_sms_messaging($op = 'info') {
         'uid2address callback' => 'messaging_sms_user_destination',
         //'field_name' => 'uid', // Field on which this address is stored
         //'field_table' => 'users', // Table on which this address is stored
-     
       );
   }
 }
@@ -63,9 +62,9 @@ function messaging_sms_user_destination($account) {
 
 /**
  * Send SMS message using the default gateway
- * 
+ *
  * This is just a wrapper for sms_send()
- * 
+ *
  * @param $destination
  *   Mobile phone number
  */
@@ -73,10 +72,32 @@ function messaging_sms_send_msg($destination, $message, $params = array()) {
   $text = messaging_text_build($message, ' ');
   return sms_send($destination, $text, $params);
 }
- 
+
 /**
  * Implementation of hook_disable()
  */
 function messaging_sms_disable() {
   messaging_method_disable('sms');
-}
\ No newline at end of file
+}
+
+/**
+ * When a new sms number is confirmed update.
+ */
+function messaging_sms_form_sms_user_settings_confirm_form_alter(&$form, &$form_state) {
+  $form['#submit'][] = 'messaging_sms_update_user';
+}
+
+/**
+ * Update destinations when a user account is updated, created
+ *
+ * The destinations for that mail account will be assigned to the user
+ */
+function messaging_sms_update_user($form, &$form_state) {
+  $uid = $form_state['values']['uid'];
+  $account = user_load($uid);
+  $sms = messaging_sms_user_destination($account);
+  if ($sms) {
+    messaging_update_destination($uid, 'mobile', $sms);
+  }
+}
+
