diff --git a/reference_option_limit.module b/reference_option_limit.module
index 17ac37b..4239328 100644
--- a/reference_option_limit.module
+++ b/reference_option_limit.module
@@ -306,6 +306,7 @@ function reference_option_limit_field_attach_form($entity_type, $entity, &$form,
     // Flag to keep track of whether we've matched something. If it remains
     // FALSE after the foreach loop, we should not go further.
     $match = FALSE;
+    $ajax_entries = array();
     // Check each limited field to see if the AJAX trigger is one of its
     // matching fields.
     foreach ($form_state['reference_option_limit'] as $field_name => $settings) {
@@ -326,15 +327,17 @@ function reference_option_limit_field_attach_form($entity_type, $entity, &$form,
         // name appended.
         $form_path = $settings['field_parents'];
         $form_path[] = $field_name;
-        $form_state['reference_option_limit_ajax_return'] = $form_path;
-
-        break;
+        $ajax_entries[] = $form_path;
       }
     }
     if ($match == FALSE) {
       // The triggering element has nothing to do with our fields: bail.
       return;
     }
+    else {
+      // @todo: Investigate issues related to return above. (else not needed)
+      $form_state['reference_option_limit_ajax_entries'] = $ajax_entries;
+    }
   }
   //dsm($form, 'hfa form');
   //dsm($form_state, 'hfa fs');
@@ -367,8 +370,8 @@ function reference_option_limit_field_attach_form($entity_type, $entity, &$form,
     $element_limited =& $form[$field_name_option_limited];
 
     // Add a wrapper div to the limited field for the ajax to work on.
-    $settings['ajax_wrapper'] = 'reference-options-limit-' . str_replace('_', '-', $field_name_option_limited);
-    $element_limited['#prefix'] = '<div id="' . $settings['ajax_wrapper'] . '">';
+    $ajax_wrapper = 'reference-options-limit-' . str_replace('_', '-', $field_name_option_limited);
+    $element_limited['#prefix'] = '<div id="' . $ajax_wrapper . '">';
     $element_limited['#suffix'] = '</div>';
 
     $match_columns = array();
@@ -398,8 +401,6 @@ function reference_option_limit_field_attach_form($entity_type, $entity, &$form,
       foreach ($elements as &$element) {
         $element['#ajax'] = array(
           'callback' => 'reference_option_limit_js',
-          'wrapper' => $settings['ajax_wrapper'],
-          'method' => 'replace',
           'effect' => 'fade',
           'event' => 'change',
         );
@@ -521,7 +522,8 @@ function reference_option_limit_field_attach_form($entity_type, $entity, &$form,
     $type = str_replace('options_', '', $field_instance_option_limited['widget']['type']);
     $multiple = $field_option_limited['cardinality'] > 1 || $field_option_limited['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
     $required = $element_limited[LANGUAGE_NONE]['#required'];
-    $has_value = TRUE; // isset($items[0][$value_key]); ?????
+    // @todo: Find out why this was changed.
+    $has_value = FALSE; // isset($items[0][$value_key]); ?????
     $properties = _options_properties($type, $multiple, $required, $has_value);
 
     // Do the same work as _options_get_options(), since that invokes the field module hook.
@@ -578,16 +580,20 @@ function reference_option_limit_get_match_columns($field) {
  * Ajax callback for the updated term reference field.
  */
 function reference_option_limit_js($form, $form_state) {
-  // We stored the path of the form element we need to return earlier on.
-  $form_return_element = drupal_array_get_nested_value($form, $form_state['reference_option_limit_ajax_return']);
-
+  $commands = array();
+  // We stored the paths of the form elements we need to replace earlier on.
+  foreach ($form_state['reference_option_limit_ajax_entries'] as $form_path) {
+    $field_name = $form_path[count($form_path) - 1];
+    $wrapper = '#reference-options-limit-' . str_replace('_', '-', $field_name);
+    $content = drupal_array_get_nested_value($form, $form_path);
+    $commands[] = ajax_command_replace($wrapper, drupal_render($content));
+    $commands[] = ajax_command_changed($wrapper);
+  }
+  // @todo: Should messages be attached to the triggering element instead?
   if ($messages = theme('status_messages')) {
-    $form_return_element['messages'] = array(
-      '#markup' => '<div class="views-messages">' . $messages . '</div>',
-    );
+    $commands[] = ajax_command_prepend('div#ajax-status-messages-wrapper', $messages);
   }
-
-  return $form_return_element;
+  return array('#type' => 'ajax', '#commands' => $commands);
 }
 
 /**
