diff --git a/conditional_fields.module b/conditional_fields.module
index 23b8cb2..8166a8b 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,36 @@ function conditional_fields_load_dependencies($entity_type = NULL, $bundle = NUL
   return FALSE;
 }
 
+function _conditional_fields_load_parents($pids, $conditions, &$parents) {
+  static $default_options = array();
+  $pids = (array) $pids;
+
+  if (empty($default_options)) {
+    $default_options = conditional_fields_dependency_default_options();
+  }
+
+  foreach ($pids as $pid) {
+    if (isset($conditions[$pid]) && !isset($parents['dependents'][$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)) {
+        if (is_array($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..066acf2 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,36 @@ 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) {
+    foreach ($dependent_value as $dep_id => $dep_value) {
+      if (!(isset($dep_value['options']['is_parent']) && $dep_value['options']['is_parent'] ) && $dep_id != $id) {
+        $dep_options[$dep_id] = t('#@id @dependent_name - @dependees_name', array('@id' => $dep_id, '@dependent_name' => $dependent_field, '@dependees_name' => $dep_value['dependee']));
+      }
+    }
+  }
+
+  if (!empty($dep_options)) {
+    $form['parent_list'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Parent options'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      '#tree' => FALSE,
+    );
+
+    $form['parent_list']['parent'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('Parent condition'),
+      '#empty_option' => t('- Select -'),
+      '#options' => $dep_options,
+      '#multiple' => TRUE,
+      '#default_value' => isset($dependency['options']['parent']) ? (array) $dependency['options']['parent'] : array(),
+      '#description' => t("Select the parent condition, the condition from parent will be added to the condition what's specified for this. If you select more than one condition, it will be treated as there is AND connection between the selected conditions."),
+    );
+  }
+
   $entity = entity_get_info($dependee_instance['entity_type']);
 
   $form['settings'] = array(
@@ -708,6 +747,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'],
     ),
   );
 
