diff --git a/includes/tvi.admin.inc b/includes/tvi.admin.inc
index aa09ff1..1c39d82 100755
--- a/includes/tvi.admin.inc
+++ b/includes/tvi.admin.inc
@@ -128,6 +128,17 @@ function tvi_taxonomy_admin_form(&$form, $settings) {
     '#default_value' => $settings->status,
     '#description' => t('Unchecking this field will disable the use of the view when displaying this taxonomy page.'),
   );
+
+  if ($settings->type == TVI_TYPE_TERM) {
+    // Inheritance switch
+    $form['tvi']['inherit'] = array(
+      '#id' => 'tvi-inherit-check',
+      '#type' => 'checkbox',
+      '#title' => t('Child terms will use this settings.'),
+      '#default_value' => $settings->inherit,
+      '#description' => t('Checking this field will allow to define a view used by the current term and its children recursively while these children does not have their own settings.'),
+    );
+  }
 }
 
 /**
diff --git a/includes/tvi.query.inc b/includes/tvi.query.inc
index e52c5bf..1bfbe95 100755
--- a/includes/tvi.query.inc
+++ b/includes/tvi.query.inc
@@ -17,7 +17,8 @@ function tvi_default_settings($type = TVI_TYPE_TERM, $xid = 0) {
   $settings->view_name = 0;
   $settings->display = TVI_DEFAULT_DISPLAY;
   $settings->status  = 0;
-
+  $settings->inherit = 0;
+  
   $settings->is_default = TRUE;
 
   return $settings;
@@ -39,7 +40,7 @@ function tvi_load_settings($xid, $type = TVI_TYPE_TERM, $return_default = TRUE)
     $xid = reset(entity_get_uuid_by_id('taxonomy_term', array($xid)));
   }
 
-  $settings = variable_get('tvi_' . $type . '_' . $xid);
+  $settings = variable_get('tvi_' . $type . '_' . $xid, FALSE);
   $settings = is_array($settings) ? (object) $settings : $settings;
 
   if (!is_object($settings)) {
diff --git a/tvi.install b/tvi.install
index 79adad0..e696297 100755
--- a/tvi.install
+++ b/tvi.install
@@ -9,16 +9,16 @@ function tvi_install() {
   
   // Ensure weights are ok.
   $view_info = db_select('system', 's')
-          ->fields('s', array('weight'))
-          ->condition('s.name', 'views')
-          ->range(NULL, 1)
-          ->execute()
-          ->fetchObject();
+    ->fields('s', array('weight'))
+    ->condition('s.name', 'views')
+    ->range(NULL, 1)
+    ->execute()
+    ->fetchObject();
 
   db_update('system')
-          ->condition('name', 'tvi')
-          ->fields(array('weight' => $view_info->weight + 5))
-          ->execute();
+    ->fields(array('weight' => $view_info->weight + 5))
+    ->condition('name', 'tvi')
+    ->execute();
 }
 
 /**
@@ -29,9 +29,7 @@ function tvi_uninstall() {
     ->condition('name', 'tvi_%', 'LIKE');
 }
 
-/*
- * Implements hook_update_N().
- * 
+/**
  * Replace xid int field by a varchar field to allow uuid usage.
  */
 function tvi_update_7000(&$sandbox) {
diff --git a/tvi.module b/tvi.module
index 4447cfd..72e98f5 100755
--- a/tvi.module
+++ b/tvi.module
@@ -269,6 +269,20 @@ function tvi_get_term_info($tid, $type = TVI_DATATYPE_VIEW) {
     tvi_include('query');
 
     $settings = tvi_load_settings($term->tid, TVI_TYPE_TERM, FALSE);
+
+    // If the term has no settings, search for parent terms' ones.
+    if (!$settings || !$settings->status) {
+      // Get all the term's ancestors
+      $parents = taxonomy_get_parents_all($term->tid);
+      // Remove the current term from the array
+      $current = array_shift($parents);
+      // While the settings are not set, not active or not inheritables
+      while (($current = array_shift($parents)) && (!$settings || !$settings->status || !$settings->inherit)) {
+        $settings = tvi_load_settings($current->tid, TVI_TYPE_TERM, FALSE);
+      }
+    }
+
+    // If the term and its parents have no settings, take the vocabulary's one.
     if (!$settings || !$settings->status) {
       // Then vocabulary override.
       $settings = tvi_load_settings($term->vid, TVI_TYPE_VOCAB, FALSE);
