diff --git a/encrypted_fields_user.module b/encrypted_fields_user.module
index 85b3331..952889a 100644
--- a/encrypted_fields_user.module
+++ b/encrypted_fields_user.module
@@ -73,18 +73,34 @@ function encrypted_fields_user_permission() {
  */
 function _encrypted_fields_user_settings_form($form, $form_state) {
   $user_info = new EncryptedFieldsUserOperation();
+  $options = $user_info->fieldsSettings();
+  if (isset($options['init'])) {
+    unset($options['init']);
+  }
+
   $form['encrypted_fields_user_fields'] = array(
     '#type' => 'checkboxes',
     '#title' => t('User fields'),
-    '#options' => $user_info->fieldsSettings(),
+    '#options' => $options,
     '#description' => t('Fields that will be encoded.'),
     '#default_value' => $user_info::variableGet('encrypted_fields_user_fields', array('')),
     '#required' => TRUE,
   );
+  $form['#submit'][] = '_encrypted_fields_user_settings_form_submit';
+
   return system_settings_form($form);
 }
 
 /**
+ * Submit for the settings form.
+ */
+function _encrypted_fields_user_settings_form_submit($form, &$form_state) {
+  if (!empty($form_state['values']['encrypted_fields_user_fields']['mail'])) {
+    $form_state['values']['encrypted_fields_user_fields']['init'] = 'init';
+  }
+}
+
+/**
  * The function that generates form encoding or decoding existing users.
  */
 function _encrypted_fields_user_operation_all_user_form($form, $form_state) {
diff --git a/encrypted_fields_user_class.inc b/encrypted_fields_user_class.inc
index 4a8bd0e..a2db8d6 100644
--- a/encrypted_fields_user_class.inc
+++ b/encrypted_fields_user_class.inc
@@ -197,10 +197,15 @@ class EncryptedFieldsUserOperation {
           $user->$fields_value = $field_value;
         }
         else {
-          $max_count = count($user->{$fields_value}[$lang]);
+          if ($key == 'init') {
+            $max_count = count($user->{$fields_value});
+          }
+          else {
+            $max_count = count($user->{$fields_value}[$lang]);
+          }
           for ($count = 0; $count < $max_count; $count++) {
-            if (!empty($user->{$fields_value}[$lang][$count])) {
-              $value_field = $user->{$fields_value}[$lang][$count]['value'];
+            if (!empty($user->{$fields_value}[$lang][$count]) || $user->{$fields_value} == 'init') {
+              $value_field = ($key == 'init') ? $user->{$fields_value} : $user->{$fields_value}[$lang][$count]['value'];
               $value = array(
                 'language' => !empty($lang) ? $lang : '',
                 'uid' => $user->uid,
@@ -231,7 +236,12 @@ class EncryptedFieldsUserOperation {
                   );
                 }
               }
-              $user->{$fields_value}[$lang][$count]['value'] = $field_value;
+              if ($key == 'init') {
+                $user->{$fields_value} = $field_value;
+              }
+              else {
+                $user->{$fields_value}[$lang][$count]['value'] = $field_value;
+              }
             }
           }
         }
@@ -371,10 +381,15 @@ class EncryptedFieldsUserOperation {
           $user->$fields_value = $field_value;
         }
         else {
-          $max_count = count($user->{$fields_value}[$lang]);
+          if ($key == 'init') {
+            $max_count = count($user->{$fields_value});
+          }
+          else {
+            $max_count = count($user->{$fields_value}[$lang]);
+          }
           for ($count = 0; $count < $max_count; $count++) {
-            if (!empty($user->{$fields_value}[$lang][$count])) {
-              $value_field = $user->{$fields_value}[$lang][$count]['value'];
+            if (!empty($user->{$fields_value}[$lang][$count]) || $user->{$fields_value} == 'init') {
+              $value_field = ($key == 'init') ? $user->{$fields_value} : $user->{$fields_value}[$lang][$count]['value'];
               $value = array(
                 'language' => !empty($lang) ? $lang : '',
                 'uid' => $user->uid,
@@ -383,8 +398,13 @@ class EncryptedFieldsUserOperation {
                 'value' => $value_field,
               );
               $field_value = $this->operation('decrypt', $value);
-              $user->{$fields_value}[$lang][$count]['value'] = $field_value;
-              $user->{$fields_value}[$lang][$count]['safe_value'] = $field_value;
+              if ($key == 'init') {
+                $user->{$fields_value} = $field_value;
+              }
+              else {
+                $user->{$fields_value}[$lang][$count]['value'] = $field_value;
+                $user->{$fields_value}[$lang][$count]['safe_value'] = $field_value;
+              }
             }
           }
         }
@@ -428,12 +448,22 @@ class EncryptedFieldsUserOperation {
           $user[$fields_value] = $field_value;
         }
         else {
-          $max_count = count($user[$fields_value][$lang]);
+          if ($key == 'init') {
+            $max_count = count($user->{$fields_value});
+          }
+          else {
+            $max_count = count($user->{$fields_value}[$lang]);
+          }
           for ($count = 0; $count < $max_count; $count++) {
-            if (!empty($user[$fields_value][$lang][$count])) {
-              $value_field = $user[$fields_value][$lang][$count]['value'];
-              if ($account->{$fields_value}[$lang][$count]['value']) {
-                $id = $this->encryptedFieldIsset(array('id' => $account->{$fields_value}[$lang][$count]['value']));
+            if (!empty($user->{$fields_value}[$lang][$count]) || $user->{$fields_value} == 'init') {
+              $value_field = ($key == 'init') ? $user->{$fields_value} : $user->{$fields_value}[$lang][$count]['value'];
+              if ($account->{$fields_value}[$lang][$count]['value'] || $account->{$fields_value} == 'init') {
+                if ($account->{$fields_value} == 'init') {
+                  $id = $this->encryptedFieldIsset(array('id' => $account->{$fields_value}));
+                }
+              else {
+                  $id = $this->encryptedFieldIsset(array('id' => $account->{$fields_value}[$lang][$count]['value']));
+                }
               }
               $field_value = $this->operation('encrypt', array('value' => $value_field));
               $value = array(
@@ -450,7 +480,12 @@ class EncryptedFieldsUserOperation {
                 $value['id'] = $id;
                 $field_value = $this->encryptedFieldUserUpdate($value);
               }
-              $user[$fields_value][$lang][$count]['value'] = $field_value;
+              if ($key == 'init') {
+                $user->{$fields_value} = $field_value;
+              }
+              else {
+                $user->{$fields_value}[$lang][$count]['value'] = $field_value;
+              }
             }
           }
         }
@@ -488,7 +523,7 @@ class EncryptedFieldsUserOperation {
    */
   public function encryptedFieldUserEditProfile($user, $post) {
     foreach ($user as $value) {
-      if ($value && array_intersect_key($post, (array)$value)) {
+      if ($value && array_intersect_key($post, (array) $value)) {
         return FALSE;
       }
     }
