diff --git a/tests/title.test b/tests/title.test
index 8a72b90..61fa2a3 100644
--- a/tests/title.test
+++ b/tests/title.test
@@ -154,7 +154,10 @@ class TitleFieldReplacementTestCase extends DrupalWebTestCase {
     $admin_user = $this->drupalCreateUser(array('administer content types', 'administer taxonomy'));
     $this->drupalLogin($admin_user);
 
-    $edit['title_auto_attach[]'] = array('taxonomy_term:name', 'taxonomy_term:description');
+    $edit = array(
+      "title_taxonomy_term[auto_attach][name]" => TRUE,
+      "title_taxonomy_term[auto_attach][description]" => TRUE,
+    );
     $this->drupalPost('admin/config/content/title', $edit, t('Save configuration'));
 
     $edit = array(
diff --git a/title.admin.inc b/title.admin.inc
index c61f470..743a46c 100644
--- a/title.admin.inc
+++ b/title.admin.inc
@@ -79,24 +79,40 @@ function title_field_replacement_form_submit($form, &$form_state) {
  * Form settings for automated title_field attachement.
  */
 function title_admin_settings_form() {
-  foreach (entity_get_info() as $entity_type => $entity) {
-    if (empty($entity['field replacement'])) {
+  $form['tabs'] = array(
+    '#type' => 'vertical_tabs',
+  );
+
+  foreach (entity_get_info() as $entity_type => $info) {
+    if (empty($info['field replacement'])) {
       continue;
     }
 
-    foreach (array_keys($entity['field replacement']) as $replacement) {
-      $options[$entity_type . ':' . $replacement] = $entity['label'] ." - ". ucfirst($replacement);
+    $form['settings']['title_' . $entity_type] = array(
+      '#type' => 'fieldset',
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      '#tree' => TRUE,
+      '#group' => 'tabs',
+      '#title' => $info['label'],
+    );
+
+    $options = array();
+    foreach (array_keys($info['field replacement']) as $replacement) {
+      $options[$replacement] = drupal_ucfirst($replacement);
     }
-  }
 
-  $form['title_auto_attach'] = array(
-    '#type' => 'select',
-    '#title' => t('Auto attach replacement field'),
-    '#options' => $options,
-    '#multiple' => TRUE,
-    '#default_value' => variable_get('title_auto_attach', array()),
-    '#description' => t('Enable to auto-attach a replacement field when a bundle is created.'),
-  );
+    $default = variable_get('title_' . $entity_type, array());
+    $form['settings']['title_' . $entity_type]['auto_attach'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('Automatic field replacement'),
+      '#options' => $options,
+      '#default_value' => !empty($default['auto_attach']) ? $default['auto_attach'] : array(),
+      '#description' => t('Automatically replace the selected field(s) when creating a new bundle.'),
+    );
+
+    $form['settings']['title_' . $entity_type]['hide_label'] = _title_hide_label_widget($default, $info['label']);
+  }
 
   return system_settings_form($form);
 }
diff --git a/title.core.inc b/title.core.inc
diff --git a/title.install b/title.install
index 4dc4432..0cce7bd 100644
--- a/title.install
+++ b/title.install
@@ -33,3 +33,23 @@ function title_install() {
 function title_update_7001() {
   _title_install_set_weight(100);
 }
+
+/**
+ * Implements hook_update_N.
+ *
+ * Update title_auto_attach variables to the new format.
+ */
+function title_update_7002() {
+  $variables = array();
+
+  foreach (variable_get('title_auto_attach', array()) as $variable) {
+    $pieces = explode(':', $variable);
+    $variables['title_' . $pieces[0]]['auto_attach'][$pieces[1]] = $pieces[1];
+  }
+
+  foreach ($variables as $name => $value) {
+    variable_set($name, $value);
+  }
+
+  variable_del('title_auto_attach');
+}
diff --git a/title.module b/title.module
index 06096ac..f48fa5e 100644
--- a/title.module
+++ b/title.module
@@ -242,12 +242,15 @@ function title_field_replacement_toggle($entity_type, $bundle, $legacy_field) {
   $instance = field_info_instance($entity_type, $field_name, $bundle);
 
   if (empty($instance)) {
+    $options = variable_get('title_' . $entity_type, array());
     $field = field_info_field($field_name);
     if (empty($field)) {
       field_create_field($info['field']);
     }
     $info['instance']['entity_type'] = $entity_type;
     $info['instance']['bundle'] = $bundle;
+    $info['instance']['settings']['hide_label']['page'] = isset($options['hide_label']['page']) ? $options['hide_label']['page'] : FALSE;
+    $info['instance']['settings']['hide_label']['entity'] = isset($options['hide_label']['entity']) ? $options['hide_label']['entity'] : FALSE;
     field_create_instance($info['instance']);
     return TRUE;
   }
@@ -634,20 +637,27 @@ function title_form_field_ui_field_edit_form_alter(&$form, $form_state) {
 
   if (title_field_replacement_is_label($entity_type, $instance['field_name'])) {
     $info = entity_get_info($entity_type);
-    $form['instance']['settings']['hide_label'] = array(
-      '#type' => 'checkboxes',
-      '#title' => t('Label replacement'),
-      '#description' => t('Check these options if you wish to display the @entity_type label in the content area.', array('@entity_type' => $info['label'])),
-      '#default_value' => !empty($instance['settings']['hide_label']) ? $instance['settings']['hide_label'] : array(),
-      '#options' => array(
-        'page' => t('Hide page title'),
-        'entity' => t('Hide entity label'),
-      ),
-    );
+    $form['instance']['settings']['hide_label'] = _title_hide_label_widget($instance['settings'], $info['label']);
   }
 }
 
 /**
+ * Returns the hide label form widget.
+ */
+function _title_hide_label_widget($default, $entity_label) {
+  return array(
+    '#type' => 'checkboxes',
+    '#title' => t('Label replacement'),
+    '#description' => t('Check these options if you wish to hide the main page title or each label when displaying multiple items of type %entity_label.', array('%entity_label' => $entity_label)),
+    '#default_value' => !empty($default['hide_label']) ? $default['hide_label'] : array(),
+    '#options' => array(
+      'page' => t('Hide page title'),
+      'entity' => t('Hide label in %entity_label listings', array('%entity_label' => drupal_strtolower($entity_label))),
+    ),
+  );
+}
+
+/**
  * Checks whether the given field name is a replaced entity label.
  *
  * @param $entity_type
@@ -777,10 +787,10 @@ function title_field_attach_create_bundle($entity_type, $bundle) {
     return;
   }
 
-  $options = variable_get('title_auto_attach', array());
+  $options = variable_get('title_' . $entity_type, array());
 
   foreach (array_keys($entity_info['field replacement']) as $field_name) {
-    if (!isset($options[$entity_type . ':' . $field_name])) {
+    if (!isset($options['auto_attach'][$field_name])) {
       continue;
     }
 
@@ -791,12 +801,12 @@ function title_field_attach_create_bundle($entity_type, $bundle) {
 
     title_field_replacement_toggle($entity_type, $bundle, $field_name);
 
+    $instance = field_info_instance($entity_type, $field_name, $bundle);
     $params = array(
-      '@entity_name' => strtolower($entity_info['label']),
-      '@field_name' => $entity_info['field replacement'][$field_name]['field']['field_name'],
-      '@bundle_name' => $bundle,
-    );
+      '@entity_label' => drupal_strtolower($entity_info['label']),
+      '%field_name' => t($entity_info['field replacement'][$field_name]['instance']['label']),
+     );
 
-    drupal_set_message(t('The field @field_name was attached automatically to @entity_name - @bundle_name.', $params));
+    drupal_set_message(t('The @entity_label %field_name field was automatically replaced.', $params));
   }
 }
