diff --git a/sites/all/modules/conditional_fields/conditional_fields.module b/sites/all/modules/conditional_fields/conditional_fields.module
index 23b8cb2..ae3490b 100644
--- a/sites/all/modules/conditional_fields/conditional_fields.module
+++ b/sites/all/modules/conditional_fields/conditional_fields.module
@@ -264,7 +264,7 @@ function conditional_fields_element_after_build($element, &$form_state) {
   }
   else {
     $entity_type = $field['#entity_type'];
-    $bundle = $field['#bundle'];    
+    $bundle = $field['#bundle'];
   }
 
   $dependencies = conditional_fields_load_dependencies($entity_type, $bundle);
@@ -272,26 +272,46 @@ function conditional_fields_element_after_build($element, &$form_state) {
   if (!$dependencies) {
     return $element;
   }
-
+  
+  // Attach dependee.
+  if (isset($dependencies['dependees'][$field['#field_name']])) {
+    $field_parents_string = _conditional_fields_flatten_array(array_filter($field['#field_parents'], 'is_numeric'));
+    foreach ($dependencies['dependees'][$field['#field_name']] as $id => $dependency) {
+      if (!isset($form_state['complete form']['#conditional_fields'][$field_parents_string][$field['#field_name']]['dependents'][$id])) {
+        conditional_fields_attach_dependency($form_state['complete form'], $field, array('#field_name' => $dependency['dependent']), $dependency['options'], $field_parents_string, $id);
+      }
+    }
+  }
+  
   // Attach dependent.
   if (isset($dependencies['dependents'][$field['#field_name']])) {
+    $field_parents_string = _conditional_fields_flatten_array(array_filter($field['#field_parents'], 'is_numeric'));  
     foreach ($dependencies['dependents'][$field['#field_name']] as $id => $dependency) {
-      if (!isset($form_state['complete form']['#conditional_fields'][$field['#field_name']]['dependees'][$id])) {
-        conditional_fields_attach_dependency($form_state['complete form'], array('#field_name' => $dependency['dependee']), $field, $dependency['options'], $id);
+      if (!isset($form_state['complete form']['#conditional_fields'][$field_parents_string][$field['#field_name']]['dependees'][$id])) {
+        conditional_fields_attach_dependency($form_state['complete form'], array('#field_name' => $dependency['dependee']), $field, $dependency['options'], $field_parents_string, $id);
       }
     }
   }
 
-  // Attach dependee.
-  if (isset($dependencies['dependees'][$field['#field_name']])) {
-    foreach ($dependencies['dependees'][$field['#field_name']] as $id => $dependency) {
-      if (!isset($form_state['complete form']['#conditional_fields'][$field['#field_name']]['dependents'][$id])) {
-        conditional_fields_attach_dependency($form_state['complete form'], $field, array('#field_name' => $dependency['dependent']), $dependency['options'], $id);
-      }
+  return $element;
+}
+
+/**
+ * Flatten a one-dimensional array.
+ */
+function _conditional_fields_flatten_array($array, $loop = 1, $separator = ':') {
+  $array_string = NULL;
+  $array_count  = count($array);
+
+  foreach ($array as $array_value) {
+    $array_string .= $array_value;
+    if ($loop != $array_count) {
+      $array_string .= $separator; 
     }
+    $loop++;
   }
 
-  return $element;
+  return $array_string;
 }
 
 /**
@@ -364,7 +384,7 @@ function conditional_fields_element_after_build($element, &$form_state) {
  *   Note that you don't need to manually set all these options, since default
  *   settings are always provided.
  */
-function conditional_fields_attach_dependency(&$form, $dependee, $dependent, $options, $id = 0) {
+function conditional_fields_attach_dependency(&$form, $dependee, $dependent, $options, $field_parents_string, $id = 0) {
   $options += conditional_fields_dependency_default_options();
 
   // The absence of the $id parameter identifies a custom dependency.
@@ -393,8 +413,8 @@ function conditional_fields_attach_dependency(&$form, $dependee, $dependent, $op
 
   // Attach dependee.
   if (isset($dependee['#parents'])) {
-    $form['#conditional_fields'][$dependee['#field_name']]['parents'] = $dependee['#parents'];
-    $form['#conditional_fields'][$dependee['#field_name']]['dependents'][$id] = array(
+    $form['#conditional_fields'][$field_parents_string][$dependee['#field_name']]['parents'] = $dependee['#parents'];
+    $form['#conditional_fields'][$field_parents_string][$dependee['#field_name']]['dependents'][$id] = array(
       'dependent' => $dependent['#field_name'],
       'options'   => $options,
     );
@@ -402,8 +422,8 @@ function conditional_fields_attach_dependency(&$form, $dependee, $dependent, $op
 
   // Attach dependent.
   if (isset($dependent['#parents'])) {
-    $form['#conditional_fields'][$dependent['#field_name']]['parents'] = $dependent['#parents'];
-    $form['#conditional_fields'][$dependent['#field_name']]['dependees'][$id] = array(
+    $form['#conditional_fields'][$field_parents_string][$dependent['#field_name']]['parents'] = $dependent['#parents'];
+    $form['#conditional_fields'][$field_parents_string][$dependent['#field_name']]['dependees'][$id] = array(
       'dependee' => $dependee['#field_name'],
       'options'  => $options,
     );
@@ -428,160 +448,161 @@ function conditional_fields_form_after_build($form, $form_state) {
   $state_handlers = conditional_fields_states_handlers();
 
   // Cycle all dependents.
-  foreach ($form['#conditional_fields'] as $dependent => $dependent_info) {
-    $states = array();
-
-    if (!isset($dependent_info['dependees'])) {
-      continue;
-    }
-
-    $dependent_form_field = drupal_array_get_nested_value($form, $dependent_info['parents']);
-
-    foreach ($dependent_info['dependees'] as $dependency) {
-      $dependee = $dependency['dependee'];
-      $dependee_info = $form['#conditional_fields'][$dependee];
-      $dependee_form_field = drupal_array_get_nested_value($form, $dependee_info['parents']);
-      $options = $dependency['options'];
-
-      // Load field edit behaviors.
-      // If this dependent has multiple dependees, only the logic of the first
-      // dependency will be taken into account.
-      if (!isset($behaviors)) {
-        $behaviors = conditional_fields_field_behaviors('edit', $options);
+  foreach ($form['#conditional_fields'] as $parent_dependent_key => $parent_dependent_info) { 
+    foreach ($parent_dependent_info as $dependent => $dependent_info) {
+      $states = array();
+  
+      if (!isset($dependent_info['dependees'])) {
+        continue;
       }
-
-      // Determine if the dependee is in the form.
-      if (!$dependee_form_field) {
-        // Apply orphan dependent behaviors.
-        if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN, $behaviors)) {
-          // TODO
-          /*
-          $is_triggered = TRUE;
-
-          if ($is_orphan && !$is_triggered) {
-            $form[$dependent]['#access'] = FALSE;
+  
+      $dependent_form_field = drupal_array_get_nested_value($form, $dependent_info['parents']);
+  
+      foreach ($dependent_info['dependees'] as $dependency) {
+        $dependee = $dependency['dependee'];
+        $dependee_info = $form['#conditional_fields'][$parent_dependent_key][$dependee];
+        $dependee_form_field = drupal_array_get_nested_value($form, $dependee_info['parents']);
+        $options = $dependency['options'];
+  
+        // Load field edit behaviors.
+        // If this dependent has multiple dependees, only the logic of the first
+        // dependency will be taken into account.
+        if (!isset($behaviors)) {
+          $behaviors = conditional_fields_field_behaviors('edit', $options);
+        }
+  
+        // Determine if the dependee is in the form.
+        if (!$dependee_form_field) {
+          // Apply orphan dependent behaviors.
+          if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN, $behaviors)) {
+            // TODO
+            /*
+            $is_triggered = TRUE;
+  
+            if ($is_orphan && !$is_triggered) {
+              $form[$dependent]['#access'] = FALSE;
+            }
+            */
           }
-          */
+          if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN, $behaviors)) {
+            $dependent_form_field['#access'] = FALSE;
+          }
+          continue;
         }
-        if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN, $behaviors)) {
-          $dependent_form_field['#access'] = FALSE;
+  
+        unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN]);
+        unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN]);
+  
+        // Build a jQuery selector if it was not overridden by a custom value.
+        if (!$options['selector']) {
+          $options['selector'] = conditional_fields_field_selector($dependee_form_field);
         }
-        continue;
-      }
-
-      unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_ORPHAN]);
-      unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_HIDE_UNTRIGGERED_ORPHAN]);
-
-      // Build a jQuery selector if it was not overridden by a custom value.
-      if (!$options['selector']) {
-        $options['selector'] = conditional_fields_field_selector($dependee_form_field);
-      }
-      else {
-        // Replace the language placeholder in the selector with current language.
-        $options['selector'] = str_replace('%lang', $dependee_form_field['#language'], $options['selector']);
-      }
-
-      if ($options['condition'] != 'value') {
-        // Conditions different than "value" are always evaluated against TRUE.
-        $state = array($options['state'] => array($options['selector'] => array($options['condition'] => TRUE)));
-      }
-      else {
-        // Build the values that trigger the dependency.
-        $values = array();
-
-        if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) {
-          $values[$options['condition']] = $options['value_form'];
+        else {
+          // Replace the language placeholder in the selector with current language.
+          $options['selector'] = str_replace('%lang', $dependee_form_field['#language'], $options['selector']);
         }
-        elseif ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND) {
-          $values[$options['condition']] = count($options['values']) == 1 ? $options['values'][0] : $options['values'];
+  
+        if ($options['condition'] != 'value') {
+          // Conditions different than "value" are always evaluated against TRUE.
+          $state = array($options['state'] => array($options['selector'] => array($options['condition'] => TRUE)));
         }
         else {
-          if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR) {
-            // XOR behaves like OR with added 'xor' element.
-            $values[] = 'xor';
+          // Build the values that trigger the dependency.
+          $values = array();
+  
+          if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_WIDGET) {
+            $values[$options['condition']] = $options['value_form'];
           }
-          elseif ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT) {
-            // NOT behaves like OR with switched state.
-            $options['state'] = strpos($options['state'], '!') === 0 ? drupal_substr($options['state'], 1) : '!' . $options['state'];
+          elseif ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_AND) {
+            $values[$options['condition']] = count($options['values']) == 1 ? $options['values'][0] : $options['values'];
           }
-
-          // OR, NOT and XOR conditions are obtained with a nested array.
-          foreach ($options['values'] as $value) {
-            $values[] = array($options['condition'] => $value);
+          else {
+            if ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_XOR) {
+              // XOR behaves like OR with added 'xor' element.
+              $values[] = 'xor';
+            }
+            elseif ($options['values_set'] == CONDITIONAL_FIELDS_DEPENDENCY_VALUES_NOT) {
+              // NOT behaves like OR with switched state.
+              $options['state'] = strpos($options['state'], '!') === 0 ? drupal_substr($options['state'], 1) : '!' . $options['state'];
+            }
+  
+            // OR, NOT and XOR conditions are obtained with a nested array.
+            foreach ($options['values'] as $value) {
+              $values[] = array($options['condition'] => $value);
+            }
           }
-        }
-
-        $state = array($options['state'] => array($options['selector'] => $values));
-
-        $dependee_form_state = isset($dependee_form_field['#field_parents'], $dependee_form_field['#field_name'], $dependee_form_field['#language']) ? field_form_get_state($dependee_form_field['#field_parents'], $dependee_form_field['#field_name'], $dependee_form_field['#language'], $form_state) : NULL;
-
-        // Execute special handler for fields that need further processing.
-        // The handler has no return value. Modify the $state parameter by
-        // reference if needed.
-        foreach ($state_handlers as $handler => $handler_conditions) {
-          if (array_intersect_assoc($handler_conditions, $dependee_form_field) == $handler_conditions) {
-            $handler($dependee_form_field, $dependee_form_state, $options, $state);
+  
+          $state = array($options['state'] => array($options['selector'] => $values));
+  
+          $dependee_form_state = isset($dependee_form_field['#field_parents'], $dependee_form_field['#field_name'], $dependee_form_field['#language']) ? field_form_get_state($dependee_form_field['#field_parents'], $dependee_form_field['#field_name'], $dependee_form_field['#language'], $form_state) : NULL;
+  
+          // Execute special handler for fields that need further processing.
+          // The handler has no return value. Modify the $state parameter by
+          // reference if needed.
+          foreach ($state_handlers as $handler => $handler_conditions) {
+            if (array_intersect_assoc($handler_conditions, $dependee_form_field) == $handler_conditions) {
+              $handler($dependee_form_field, $dependee_form_state, $options, $state);
+            }
+          }
+  
+          // Manage required dependent fields.
+          // Validation of required fields is hard coded in _form_validate(), so we
+          // must mark these fields as not required if we want to do a conditional
+          // validation. When the form is submitted, we will check if the dependency
+          // was triggered and only then revalidate the field with the #required
+          // property restored.
+          if (isset($dependent_form_field['#required']) && $dependent_form_field['#required'] == TRUE) {
+            $dependent_form_field['#required'] = FALSE;
+  
+            // Add validation callback to element.
+            _conditional_fields_element_add_property($dependent_form_field, '#element_validate', 'conditional_fields_required_dependent_validate');
+  
+            // Add pre render callback to element.
+            _conditional_fields_element_add_property($dependent_form_field, '#pre_render', 'conditional_fields_required_dependent_pre_render');
+          }
+  
+          // Apply reset dependent to default if untriggered behavior.
+          if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED, $behaviors)) {
+            // Add validation callback to element.
+            _conditional_fields_element_add_property($dependent_form_field, '#element_validate', 'conditional_fields_behaviors_reset_default_validate');
+  
+            unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED]);
           }
         }
-
-        // Manage required dependent fields.
-        // Validation of required fields is hard coded in _form_validate(), so we
-        // must mark these fields as not required if we want to do a conditional
-        // validation. When the form is submitted, we will check if the dependency
-        // was triggered and only then revalidate the field with the #required
-        // property restored.
-        if (isset($dependent_form_field['#required']) && $dependent_form_field['#required'] == TRUE) {
-          $dependent_form_field['#required'] = FALSE;
-
-          // Add validation callback to element.
-          _conditional_fields_element_add_property($dependent_form_field, '#element_validate', 'conditional_fields_required_dependent_validate');
-
-          // Add pre render callback to element.
-          _conditional_fields_element_add_property($dependent_form_field, '#pre_render', 'conditional_fields_required_dependent_pre_render');
-        }
-
-        // Apply reset dependent to default if untriggered behavior.
-        if (in_array(CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED, $behaviors)) {
-          // Add validation callback to element.
-          _conditional_fields_element_add_property($dependent_form_field, '#element_validate', 'conditional_fields_behaviors_reset_default_validate');
-
-          unset($behaviors[CONDITIONAL_FIELDS_FIELD_EDIT_RESET_UNTRIGGERED]);
+  
+        // Merge this dependency with the states array.
+        $states = array_merge_recursive($states, $state);
+  
+        // Build effect settings for effects with options.
+        // TODO: add dependee key to allow different effects on the same selector.
+        if ($options['effect'] && $options['effect'] != 'show') {
+          $selector = conditional_fields_field_selector(drupal_array_get_nested_value($form, array($dependent_info['parents'][0])));
+          $effects[$selector] = array(
+            'effect' => $options['effect'],
+            'options' => $options['effect_options']
+          );
         }
       }
-
-      // Merge this dependency with the states array.
-      $states = array_merge_recursive($states, $state);
-
-      // Build effect settings for effects with options.
-      // TODO: add dependee key to allow different effects on the same selector.
-      if ($options['effect'] && $options['effect'] != 'show') {
-        $selector = conditional_fields_field_selector(drupal_array_get_nested_value($form, array($dependent_info['parents'][0])));
-        $effects[$selector] = array(
-          'effect' => $options['effect'],
-          'options' => $options['effect_options']
-        );
-      }
-    }
-
-    // Execute custom behaviors.
-    if (!empty($behaviors)) {
-      foreach ($behaviors as $behavior) {
-        // Custom behaviors are callbacks.
-        $$behavior('edit', $form, $form_state, $dependent, $dependencies);
+  
+      // Execute custom behaviors.
+      if (!empty($behaviors)) {
+        foreach ($behaviors as $behavior) {
+          // Custom behaviors are callbacks.
+          $$behavior('edit', $form, $form_state, $dependent, $dependencies);
+        }
       }
+  
+      unset($behaviors);
+  
+      // Save the modified field back into the form.
+      drupal_array_set_nested_value($form, $dependent_info['parents'], $dependent_form_field);
+  
+      // Add the #states property to the dependent field's outermost container.
+      $dependent_parents = isset($dependent_form_field['#field_parents']) ? $dependent_form_field['#field_parents'] : array();
+      $dependent_container = array_slice($dependent_info['parents'], 0, count($dependent_parents) + 1);
+      drupal_array_set_nested_value($form, array_merge($dependent_container, array('#states')), $states);
     }
-
-    unset($behaviors);
-
-    // Save the modified field back into the form.
-    drupal_array_set_nested_value($form, $dependent_info['parents'], $dependent_form_field);
-
-    // Add the #states property to the dependent field's outermost container.
-    $dependent_parents = isset($dependent_form_field['#field_parents']) ? $dependent_form_field['#field_parents'] : array();
-    $dependent_container = array_slice($dependent_info['parents'], 0, count($dependent_parents) + 1);
-    drupal_array_set_nested_value($form, array_merge($dependent_container, array('#states')), $states);
   }
-
   // Add effect settings to the form.
   if ($effects) {
     $form['#attached']['js'][] = drupal_get_path('module', 'conditional_fields') . '/js/conditional_fields.effect.js';
@@ -631,7 +652,7 @@ function conditional_fields_required_dependent_validate($elements, $form_state,
   }
 
   // Check if the dependency was triggered.
-  $is_triggered = conditional_fields_evaluate_dependencies($elements['#field_name'], $form, $form_state);
+  $is_triggered = conditional_fields_evaluate_dependencies($elements, $form, $form_state);
 
   if ($is_triggered) {
     if (isset($elements['#title'])) {
@@ -658,7 +679,7 @@ function conditional_fields_behaviors_reset_default_validate(&$elements, &$form_
   }
 
   // Check if the dependency was triggered.
-  $is_triggered = conditional_fields_evaluate_dependencies($elements['#field_name'], $form, $form_state);
+  $is_triggered = conditional_fields_evaluate_dependencies($elements, $form, $form_state);
 
   if (!$is_triggered) {
     $default_value = field_get_default_value($instance['entity_type'], NULL, $elements, $instance, $elements['#language']);
@@ -818,12 +839,15 @@ function conditional_fields_entity_view_alter(&$build, $type) {
 /**
  * Evaluate a set of dependencies for a dependent field.
  */
-function conditional_fields_evaluate_dependencies($dependent, $form, $form_state) {
-  $dependencies = $form['#conditional_fields'][$dependent]['dependees'];
+function conditional_fields_evaluate_dependencies($elements, $form, $form_state) {
+  $dependent = $elements['#field_name'];
+  $parents_dependent_key = _conditional_fields_flatten_array(array_filter($elements['#field_parents'], 'is_numeric'));
+  
+  $dependencies = $form['#conditional_fields'][$parents_dependent_key][$dependent]['dependees'];
   $evaluated_dependees = array();
 
   foreach ($dependencies as $dependency) {
-    $values = drupal_array_get_nested_value($form_state['values'], $form['#conditional_fields'][$dependency['dependee']]['parents']);
+    $values = drupal_array_get_nested_value($form_state['values'], $form['#conditional_fields'][$parents_dependent_key][$dependency['dependee']]['parents']);
 
     // TODO: OR/XOR grouping of dependencies.
     $evaluated_dependees[$dependent]['AND'][] = conditional_fields_evaluate_dependency('edit', $values, $dependency['options']);
