diff --git a/entityreference.module b/entityreference.module
index 80191d7..4f1e9f7 100644
--- a/entityreference.module
+++ b/entityreference.module
@@ -55,12 +55,13 @@ function entityreference_field_info() {
     'settings' => array(
       // Default to the core target entity type node.
       'target_type' => 'node',
+    ),
+    'instance_settings' => array(
       // The handler for this field.
       'handler' => 'base',
       // The handler settings.
       'handler_settings' => array(),
     ),
-    'instance_settings' => array(),
     'default_widget' => 'entityreference_autocomplete',
     'default_formatter' => 'entityreference_label',
     'property_callbacks' => array('entityreference_field_property_callback'),
@@ -143,6 +144,7 @@ function entityreference_get_behavior_handlers($field, $instance = NULL) {
     $field['settings'] += array('behaviors' => array());
 
     $object_cache[$field['field_name']] = array();
+    // @todo Is this check is correct? Should it be $field['settings']['behaviors'] ?
     $behaviors = !empty($field['settings']['handler_settings']['behaviors']) ? $field['settings']['handler_settings']['behaviors'] : array();
     if (!empty($instance['settings']['behaviors'])) {
       $behaviors = array_merge($behaviors, $instance['settings']['behaviors']);
@@ -185,7 +187,7 @@ function _entityreference_get_behavior_handler($behavior) {
  */
 function entityreference_get_selection_handler($field, $instance = NULL, $entity_type = NULL, $entity = NULL) {
   ctools_include('plugins');
-  $handler = $field['settings']['handler'];
+  $handler = $instance['settings']['handler'];
   $class = ctools_plugin_load_class('entityreference', 'selection', $handler, 'class');
 
   if (class_exists($class)) {
@@ -427,48 +429,6 @@ function _entityreference_field_settings_process($form, $form_state) {
     '#limit_validation_errors' => array(),
   );
 
-  ctools_include('plugins');
-  $handlers = ctools_get_plugins('entityreference', 'selection');
-  uasort($handlers, 'ctools_plugin_sort');
-  $handlers_options = array();
-  foreach ($handlers as $handler => $handler_info) {
-    $handlers_options[$handler] = check_plain($handler_info['title']);
-  }
-
-  $form['handler'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Entity selection'),
-    '#tree' => TRUE,
-    '#process' => array('_entityreference_form_process_merge_parent'),
-  );
-
-  $form['handler']['handler'] = array(
-    '#type' => 'select',
-    '#title' => t('Mode'),
-    '#options' => $handlers_options,
-    '#default_value' => $settings['handler'],
-    '#required' => TRUE,
-    '#ajax' => TRUE,
-    '#limit_validation_errors' => array(),
-  );
-  $form['handler_submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Change handler'),
-    '#limit_validation_errors' => array(),
-    '#attributes' => array(
-      'class' => array('js-hide'),
-    ),
-    '#submit' => array('entityreference_settings_ajax_submit'),
-  );
-
-  $form['handler']['handler_settings'] = array(
-    '#type' => 'container',
-    '#attributes' => array('class' => array('entityreference-settings')),
-  );
-
-  $handler = entityreference_get_selection_handler($field, $instance);
-  $form['handler']['handler_settings'] += $handler->settingsForm($field, $instance);
-
   _entityreference_get_behavior_elements($form, $field, $instance, 'field');
   if (!empty($form['behaviors'])) {
     $form['behaviors'] += array(
@@ -550,6 +510,49 @@ function entityreference_field_instance_settings_form($field, $instance) {
 function _entityreference_field_instance_settings_form($form, $form_state) {
   $field = isset($form_state['entityreference']['field']) ? $form_state['entityreference']['field'] : $form['#field'];
   $instance = isset($form_state['entityreference']['instance']) ? $form_state['entityreference']['instance'] : $form['#instance'];
+  $settings = $instance['settings'];
+
+  ctools_include('plugins');
+  $handlers = ctools_get_plugins('entityreference', 'selection');
+  uasort($handlers, 'ctools_plugin_sort');
+  $handlers_options = array();
+  foreach ($handlers as $handler => $handler_info) {
+      $handlers_options[$handler] = check_plain($handler_info['title']);
+  }
+
+  $form['handler'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Entity selection'),
+      '#tree' => TRUE,
+      '#process' => array('_entityreference_form_process_merge_parent'),
+  );
+
+  $form['handler']['handler'] = array(
+      '#type' => 'select',
+      '#title' => t('Mode'),
+      '#options' => $handlers_options,
+      '#default_value' => $settings['handler'],
+      '#required' => TRUE,
+      '#ajax' => TRUE,
+      '#limit_validation_errors' => array(),
+  );
+  $form['handler_submit'] = array(
+      '#type' => 'submit',
+      '#value' => t('Change handler'),
+      '#limit_validation_errors' => array(),
+      '#attributes' => array(
+          'class' => array('js-hide'),
+      ),
+      '#submit' => array('entityreference_settings_ajax_submit'),
+  );
+
+  $form['handler']['handler_settings'] = array(
+      '#type' => 'container',
+      '#attributes' => array('class' => array('entityreference-settings')),
+  );
+
+  $handler = entityreference_get_selection_handler($field, $instance);
+  $form['handler']['handler_settings'] += $handler->settingsForm($field, $instance);
 
   _entityreference_get_behavior_elements($form, $field, $instance, 'instance');
   if (!empty($form['behaviors'])) {
diff --git a/plugins/selection/EntityReference_SelectionHandler_Generic.class.php b/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
index 902c55c..bb835b3 100644
--- a/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
+++ b/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
@@ -40,9 +40,10 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
    */
   public static function settingsForm($field, $instance) {
     $entity_info = entity_get_info($field['settings']['target_type']);
+    $settings = $instance['settings'];
 
     // Merge-in default values.
-    $field['settings']['handler_settings'] += array(
+    $settings['handler_settings'] += array(
       'target_bundles' => array(),
       'sort' => array(
         'type' => 'none',
@@ -59,7 +60,7 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
         '#type' => 'checkboxes',
         '#title' => t('Target bundles'),
         '#options' => $bundles,
-        '#default_value' => $field['settings']['handler_settings']['target_bundles'],
+        '#default_value' => $settings['handler_settings']['target_bundles'],
         '#size' => 6,
         '#multiple' => TRUE,
         '#description' => t('The bundles of the entity type that can be referenced. Optional, leave empty for all bundles.'),
@@ -83,7 +84,7 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
       ),
       '#ajax' => TRUE,
       '#limit_validation_errors' => array(),
-      '#default_value' => $field['settings']['handler_settings']['sort']['type'],
+      '#default_value' => $settings['handler_settings']['sort']['type'],
     );
 
     $form['sort']['settings'] = array(
@@ -92,9 +93,9 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
       '#process' => array('_entityreference_form_process_merge_parent'),
     );
 
-    if ($field['settings']['handler_settings']['sort']['type'] == 'property') {
+    if ($settings['handler_settings']['sort']['type'] == 'property') {
       // Merge-in default values.
-      $field['settings']['handler_settings']['sort'] += array(
+      $settings['handler_settings']['sort'] += array(
         'property' => NULL,
       );
 
@@ -103,17 +104,17 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
         '#title' => t('Sort property'),
         '#required' => TRUE,
         '#options' => drupal_map_assoc($entity_info['schema_fields_sql']['base table']),
-        '#default_value' => $field['settings']['handler_settings']['sort']['property'],
+        '#default_value' => $settings['handler_settings']['sort']['property'],
       );
     }
-    elseif ($field['settings']['handler_settings']['sort']['type'] == 'field') {
+    elseif ($settings['handler_settings']['sort']['type'] == 'field') {
       // Merge-in default values.
-      $field['settings']['handler_settings']['sort'] += array(
+      $settings['handler_settings']['sort'] += array(
         'field' => NULL,
       );
 
       $fields = array();
-      foreach (field_info_instances($field['settings']['target_type']) as $bundle_name => $bundle_instances) {
+      foreach (field_info_instances($settings['target_type']) as $bundle_name => $bundle_instances) {
         foreach ($bundle_instances as $instance_name => $instance_info) {
           $field_info = field_info_field($instance_name);
           foreach ($field_info['columns'] as $column_name => $column_info) {
@@ -127,13 +128,13 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
         '#title' => t('Sort field'),
         '#required' => TRUE,
         '#options' => $fields,
-        '#default_value' => $field['settings']['handler_settings']['sort']['field'],
+        '#default_value' => $settings['handler_settings']['sort']['field'],
       );
     }
 
-    if ($field['settings']['handler_settings']['sort']['type'] != 'none') {
+    if ($settings['handler_settings']['sort']['type'] != 'none') {
       // Merge-in default values.
-      $field['settings']['handler_settings']['sort'] += array(
+      $settings['handler_settings']['sort'] += array(
         'direction' => 'ASC',
       );
 
@@ -145,7 +146,7 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
           'ASC' => t('Ascending'),
           'DESC' => t('Descending'),
         ),
-        '#default_value' => $field['settings']['handler_settings']['sort']['direction'],
+        '#default_value' => $settings['handler_settings']['sort']['direction'],
       );
     }
 
@@ -241,8 +242,8 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
   protected function buildEntityFieldQuery($match = NULL, $match_operator = 'CONTAINS') {
     $query = new EntityFieldQuery();
     $query->entityCondition('entity_type', $this->field['settings']['target_type']);
-    if (!empty($this->field['settings']['handler_settings']['target_bundles'])) {
-      $query->entityCondition('bundle', $this->field['settings']['handler_settings']['target_bundles'], 'IN');
+    if (!empty($this->instance['settings']['handler_settings']['target_bundles'])) {
+      $query->entityCondition('bundle', $this->instance['settings']['handler_settings']['target_bundles'], 'IN');
     }
     if (isset($match)) {
       $entity_info = entity_get_info($this->field['settings']['target_type']);
@@ -258,8 +259,8 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
     $query->addMetaData('entityreference_selection_handler', $this);
 
     // Add the sort option.
-    if (!empty($this->field['settings']['handler_settings']['sort'])) {
-      $sort_settings = $this->field['settings']['handler_settings']['sort'];
+    if (!empty($this->instance['settings']['handler_settings']['sort'])) {
+      $sort_settings = $this->instance['settings']['handler_settings']['sort'];
       if ($sort_settings['type'] == 'property') {
         $query->propertyOrderBy($sort_settings['property'], $sort_settings['direction']);
       }
@@ -539,7 +540,7 @@ class EntityReference_SelectionHandler_Generic_taxonomy_term extends EntityRefer
 
     // We imitate core by calling taxonomy_get_tree().
     $entity_info = entity_get_info('taxonomy_term');
-    $bundles = !empty($this->field['settings']['handler_settings']['target_bundles']) ? $this->field['settings']['handler_settings']['target_bundles'] : array_keys($entity_info['bundles']);
+    $bundles = !empty($this->instance['settings']['handler_settings']['target_bundles']) ? $this->instance['settings']['handler_settings']['target_bundles'] : array_keys($entity_info['bundles']);
 
     foreach ($bundles as $bundle) {
       if ($vocabulary = taxonomy_vocabulary_machine_name_load($bundle)) {
diff --git a/plugins/selection/EntityReference_SelectionHandler_Views.class.php b/plugins/selection/EntityReference_SelectionHandler_Views.class.php
index 859e1e1..19f8de2 100644
--- a/plugins/selection/EntityReference_SelectionHandler_Views.class.php
+++ b/plugins/selection/EntityReference_SelectionHandler_Views.class.php
@@ -21,7 +21,7 @@ class EntityReference_SelectionHandler_Views implements EntityReference_Selectio
    * Implements EntityReferenceHandler::settingsForm().
    */
   public static function settingsForm($field, $instance) {
-    $view_settings = empty($field['settings']['handler_settings']['view']) ? '' : $field['settings']['handler_settings']['view'];
+    $view_settings = empty($instance['settings']['handler_settings']['view']) ? '' : $instance['settings']['handler_settings']['view'];
     $displays = views_get_applicable_views('entityreference display');
     // Filter views that list the entity type we want, and group the separate
     // displays by view.
@@ -72,10 +72,8 @@ class EntityReference_SelectionHandler_Views implements EntityReference_Selectio
   }
 
   protected function initializeView($match = NULL, $match_operator = 'CONTAINS', $limit = 0, $ids = NULL) {
-    $view_name = $this->field['settings']['handler_settings']['view']['view_name'];
-    $display_name = $this->field['settings']['handler_settings']['view']['display_name'];
-    $args = $this->field['settings']['handler_settings']['view']['args'];
-    $entity_type = $this->field['settings']['target_type'];
+    $view_name = $this->instance['settings']['handler_settings']['view']['view_name'];
+    $display_name = $this->instance['settings']['handler_settings']['view']['display_name'];
 
     // Check that the view is valid and the display still exists.
     $this->view = views_get_view($view_name);
@@ -103,8 +101,8 @@ class EntityReference_SelectionHandler_Views implements EntityReference_Selectio
    * Implements EntityReferenceHandler::getReferencableEntities().
    */
   public function getReferencableEntities($match = NULL, $match_operator = 'CONTAINS', $limit = 0) {
-    $display_name = $this->field['settings']['handler_settings']['view']['display_name'];
-    $args = $this->field['settings']['handler_settings']['view']['args'];
+    $display_name = $this->instance['settings']['handler_settings']['view']['display_name'];
+    $args = $this->instance['settings']['handler_settings']['view']['args'];
     $result = array();
     if ($this->initializeView($match, $match_operator, $limit)) {
       // Get the results.
@@ -132,8 +130,8 @@ class EntityReference_SelectionHandler_Views implements EntityReference_Selectio
   }
 
   function validateReferencableEntities(array $ids) {
-    $display_name = $this->field['settings']['handler_settings']['view']['display_name'];
-    $args = $this->field['settings']['handler_settings']['view']['args'];
+    $display_name = $this->instance['settings']['handler_settings']['view']['display_name'];
+    $args = $this->instance['settings']['handler_settings']['view']['args'];
     $result = array();
     if ($this->initializeView(NULL, 'CONTAINS', 0, $ids)) {
       // Get the results.
