diff --git a/conditional_fields.module b/conditional_fields.module
index 23b8cb2..e814b2f 100644
--- a/conditional_fields.module
+++ b/conditional_fields.module
@@ -1075,6 +1075,7 @@ function conditional_fields_load_dependencies($entity_type = NULL, $bundle = NUL
     }
 
     $result = $select->execute();
+    $result = $result->fetchAllAssoc('id');
 
     foreach ($result as $dependency) {
       $result_entity_type = $entity_type ? $entity_type : $dependency->entity_type;
@@ -1092,6 +1093,17 @@ function conditional_fields_load_dependencies($entity_type = NULL, $bundle = NUL
         'dependent' => $dependency->dependent,
         'options'  => $options,
       );
+
+      if (isset($options['parent']) && !empty($options['parent'])) {
+        $parents = array(
+          'dependents' => array($dependency->id => ''),
+          'dependees' => array($dependency->id => ''),
+        );
+
+        _conditional_fields_load_parents($options['parent'], $result, $parents);
+        $dependencies[$result_entity_type][$result_bundle]['dependents'][$dependency->dependent] += $parents['dependents'];
+        $dependencies[$result_entity_type][$result_bundle]['dependees'][$dependency->dependee] += $parents['dependees'];
+      }
     }
   }
 
@@ -1110,6 +1122,31 @@ function conditional_fields_load_dependencies($entity_type = NULL, $bundle = NUL
   return FALSE;
 }
 
+function _conditional_fields_load_parents($pid, $conditions, &$parents) {
+  static $default_options = array();
+
+  if (empty($default_options)) {
+    $default_options = conditional_fields_dependency_default_options();
+  }
+
+  if (isset($conditions[$pid])) {
+    $parents['dependents'][$pid]['dependee'] = $conditions[$pid]->dependee;
+    $parents['dependents'][$pid]['options'] = unserialize($conditions[$pid]->options);
+    $parents['dependents'][$pid]['options'] += $default_options;
+    $parents['dependents'][$pid]['options']['is_parent'] = TRUE;
+
+    $parents['dependees'][$pid]['dependent'] = $conditions[$pid]->dependent;
+    $parents['dependees'][$pid]['options'] = $parents['dependents'][$pid]['options'];
+
+    $next_pid = isset($parents['dependents'][$pid]['options']['parent']) ? $parents['dependents'][$pid]['options']['parent'] : NULL;
+    if (!empty($next_pid) && !isset($parents['dependents'][$next_pid])) {
+      _conditional_fields_load_parents($next_pid, $conditions, $parents);
+    }
+  }
+
+  return;
+}
+
 /**
  * Loads a dependency from the database by id.
  */
diff --git a/includes/conditional_fields.admin.inc b/includes/conditional_fields.admin.inc
index 10ec07d..16b449e 100644
--- a/includes/conditional_fields.admin.inc
+++ b/includes/conditional_fields.admin.inc
@@ -137,40 +137,49 @@ function conditional_fields_dependency_add_form($form, &$form_state, $entity_typ
       $first_row = TRUE;
 
       foreach ($dependees as $id => $dependency) {
-        $form['table']['dependencies'][$id] = array();
-
-        // Dependencies come ordered by dependent, so by adding it only to the
-        // first row they will appear grouped.
-        if ($first_row == TRUE) {
-          $form['table']['dependencies'][$id]['dependent'] = array(
-            '#markup' => $dependent,
-            '#rowspan' => count($dependees),
+        if (!(isset($dependency['options']['is_parent']) && $dependency['options']['is_parent'])) {
+          $form['table']['dependencies'][$id] = array();
+
+          // Dependencies come ordered by dependent, so by adding it only to the
+          // first row they will appear grouped.
+          if ($first_row == TRUE) {
+            $rowspan = 0;
+            foreach ($dependees as $dep) {
+              if (!(isset($dep['options']['is_parent']) && $dep['options']['is_parent'])) {
+                $rowspan++;
+              }
+            }
+
+            $form['table']['dependencies'][$id]['dependent'] = array(
+              '#markup' => $dependent,
+              '#rowspan' => $rowspan,
+            );
+
+            $first_row = FALSE;
+          }
+
+          $form['table']['dependencies'][$id] += array(
+            'dependee' => array(
+              '#markup' => $dependency['dependee'],
+            ),
+            'description' => array(
+              '#markup' => conditional_fields_dependency_description($dependency['dependee'], $dependent, $dependency['options']),
+            ),
+            'edit' => array(
+              '#type' => 'link',
+              '#title' => t('edit'),
+              '#href' => 'admin/structure/dependencies/edit/' . $id,
+              '#options' => array('query' => $destination, 'attributes' => array('title' => t('Edit dependency settings.'))),
+              '#query' => drupal_get_destination(),
+            ),
+            'delete' => array(
+              '#type' => 'link',
+              '#title' => t('delete'),
+              '#href' => 'admin/structure/dependencies/delete/' . $id,
+              '#options' => array('query' => $destination, 'attributes' => array('title' => t('Delete dependency.'))),
+            ),
           );
-
-          $first_row = FALSE;
         }
-
-        $form['table']['dependencies'][$id] += array(
-          'dependee' => array(
-            '#markup' => $dependency['dependee'],
-          ),
-          'description' => array(
-            '#markup' => conditional_fields_dependency_description($dependency['dependee'], $dependent, $dependency['options']),
-          ),
-          'edit' => array(
-            '#type' => 'link',
-            '#title' => t('edit'),
-            '#href' => 'admin/structure/dependencies/edit/' . $id,
-            '#options' => array('query' => $destination, 'attributes' => array('title' => t('Edit dependency settings.'))),
-            '#query' => drupal_get_destination(),
-          ),
-          'delete' => array(
-            '#type' => 'link',
-            '#title' => t('delete'),
-            '#href' => 'admin/structure/dependencies/delete/' . $id,
-            '#options' => array('query' => $destination, 'attributes' => array('title' => t('Delete dependency.'))),
-          ),
-        );
       }
     }
   }
@@ -526,6 +535,26 @@ function conditional_fields_dependency_edit_form($form, &$form_state, $id) {
     }
   }
 
+  $bundle_dependents = conditional_fields_load_dependencies($dependee_instance['entity_type'], $dependee_instance['bundle']);
+  $dep_options = array();
+  foreach ($bundle_dependents['dependents'] as $dependent_field => $dependent_value) {
+    $dep_id = key($dependent_value);
+    if ($dep_id != $id) {
+      $dep_options[$dep_id] = t('#@id @dependent_name - @dependees_name', array('@id' => $dep_id, '@dependent_name' => $dependent_field, '@dependees_name' => $dependent_value[$dep_id]['dependee']));
+    }
+  }
+
+  if (!empty($dep_options)) {
+    $form['parent'] = array(
+      '#type' => 'select',
+      '#title' => t('Parent condition'),
+      '#empty_option' => t('- Select -'),
+      '#options' => $dep_options,
+      '#default_value' => isset($dependency['options']['parent']) ? $dependency['options']['parent'] : '',
+      '#description' => t("Select the parent condition, the condition from parent will be added to the condition what's specified for this."),
+    );
+  }
+
   $entity = entity_get_info($dependee_instance['entity_type']);
 
   $form['settings'] = array(
@@ -708,6 +737,7 @@ function conditional_fields_dependency_edit_form_submit($form, &$form_state) {
       'element_edit_per_role' => $form_state['values']['element_edit_per_role'],
       'element_edit_roles'    => $form_state['values']['element_edit_roles'],
       'selector'              => $form_state['values']['selector'],
+      'parent'                => $form_state['values']['parent'],
     ),
   );
 
