diff --git a/includes/plugins.inc b/includes/plugins.inc
index 87cb38b..0418d99 100644
--- a/includes/plugins.inc
+++ b/includes/plugins.inc
@@ -81,6 +81,15 @@ function views_views_plugins() {
         'help topic' => 'display-feed',
       ),
     ),
+    'display_extender' => array(
+      // Default settings for all display_extender plugins.
+      'default' => array(
+        'title' => t('Empty display extender'),
+        'help' => t('Default settings for this view.'),
+        'handler' => 'views_plugin_display_extender',
+        'no ui' => TRUE,
+      ),
+    ),
     'style' => array(
       // Default settings for all style plugins.
       'default' => array(
diff --git a/plugins/views_plugin_display.inc b/plugins/views_plugin_display.inc
index 41eb115..e10a26f 100644
--- a/plugins/views_plugin_display.inc
+++ b/plugins/views_plugin_display.inc
@@ -33,6 +33,8 @@ class views_plugin_display extends views_plugin {
 
   var $handlers = array();
 
+  var $extender = array();
+
   function init(&$view, &$display, $options = NULL) {
     $this->view = &$view;
     $this->display = &$display;
@@ -130,6 +132,13 @@ class views_plugin_display extends views_plugin {
       // Clear the values
       $this->set_option('distinct', NULL);
     }
+
+    // Load extenders
+    // @todo
+    $this->extender = array();
+    foreach ($this->get_option('display_extender') as $extender) {
+      $this->extender[$extender] = $this->get_plugin('display_extender', $extender);
+    }
   }
 
   function destroy() {
@@ -146,6 +155,10 @@ class views_plugin_display extends views_plugin {
     if (isset($this->default_display)) {
       unset($this->default_display);
     }
+
+    foreach ($this->extender as $extender) {
+      $extender->destroy();
+    }
   }
 
   /**
@@ -319,6 +332,10 @@ class views_plugin_display extends views_plugin {
       unset($sections['items_per_page']);
     }
 
+    foreach ($this->extender as $extender) { 
+      $extender->defaultable_sections($sections, $section = NULL);
+    }
+
     if ($section) {
       if (!empty($sections[$section])) {
         return $sections[$section];
@@ -544,6 +561,9 @@ class views_plugin_display extends views_plugin {
         'export' => 'export_handler',
         'unpack_translatable' => 'unpack_handler',
       ),
+      'display_extender' => array(
+        'default' => array(),
+      ),
     );
 
     if (empty($this->definition['use pager'])) {
@@ -557,6 +577,11 @@ class views_plugin_display extends views_plugin {
     if ($this->is_default_display()) {
       unset($options['defaults']);
     }
+
+    foreach ($this->extender as $extender) { 
+      $extender->option_definition($options);
+    }
+
     return $options;
   }
 
@@ -675,6 +700,9 @@ class views_plugin_display extends views_plugin {
           }
 
           break;
+        case 'display_extender':
+          $options = array();
+          break;
         case 'query':
           $views_data = views_fetch_data($this->view->base_table);
           $name = !empty($views_data['table']['base']['query class']) ? $views_data['table']['base']['query class'] : 'views_query';
@@ -1167,6 +1195,29 @@ class views_plugin_display extends views_plugin {
       'value' => t('Information'),
       'desc' => t('Get information on how to theme this display'),
     );
+
+
+    $extenders = $this->get_option('display_extender');
+    if (count($extenders) > 1) {
+      $value = t('Multiple');
+    }
+    elseif (count($extenders) == 1) {
+      $extender = $this->get_plugin('display_extender', reset($extenders));
+      $value = $extender->plugin_title();
+    }
+    else {
+      $value = t('None');
+    }
+    $options['display_extender'] = array(
+      'category' => 'other',
+      'title' => t('Extenders'),
+      'value' => $value,
+      'desc' => t('Enable and configure the availible extenders'),
+    );
+
+    foreach ($this->extender as $extender) {
+      $extender->options_summary($categories, $options);
+    }
   }
 
   /**
@@ -1189,6 +1240,7 @@ class views_plugin_display extends views_plugin {
       $form['#section'] = $this->display->id . '-' . $form_state['section'];
     }
 
+    dsm($form_state['section']);
     switch ($form_state['section']) {
       case 'display_id':
         $form['#title'] .= t('The machine name of this display');
@@ -1824,8 +1876,20 @@ class views_plugin_display extends views_plugin {
           $plugin->options_form($form['pager_options'], $form_state);
         }
         break;
+      case 'display_extender':
+        $form['#title'] .= t('Display extender');
+
+        $form['display_extender'] =  array(
+          '#type' => 'checkboxes',
+          '#options' => views_fetch_plugin_names('display_extender'),
+          '#default_value' => $this->get_option('display_extender'),
+        );
+        break;
     }
 
+    foreach ($this->extender as $extender) { 
+      $extender->options_form($form, $form_state);
+    }
   }
 
   /**
@@ -1919,6 +1983,10 @@ class views_plugin_display extends views_plugin {
         }
         break;
     }
+
+    foreach ($this->extender as $extender) { 
+      $extender->options_validate($form, $form_state);
+    }
   }
 
   /**
@@ -2107,6 +2175,14 @@ class views_plugin_display extends views_plugin {
           $this->set_option('pager', $pager);
         }
         break;
+
+      case 'display_extender':
+        $this->set_option('display_extender', array_filter($form_state['values'][$section]));
+        break;
+    }
+
+    foreach ($this->extender as $extender) { 
+      $extender->options_submit($form, $form_state);
     }
   }
 
@@ -2150,7 +2226,11 @@ class views_plugin_display extends views_plugin {
   /**
    * Inject anything into the query that the display handler needs.
    */
-  function query() {  }
+  function query() {
+    foreach ($this->extender as $extender) { 
+      $extender->query();
+    }
+  }
 
   /**
    * Not all display plugins will support filtering
@@ -2273,6 +2353,10 @@ class views_plugin_display extends views_plugin {
       $exposed_form = $this->get_plugin('exposed_form');
       $exposed_form->pre_execute();
     }
+
+    foreach ($this->extender as $extender) { 
+      $extender->pre_execute();
+    }
   }
 
   /**
diff --git a/plugins/views_plugin_display_extender.inc b/plugins/views_plugin_display_extender.inc
new file mode 100644
index 0000000..e762da6
--- /dev/null
+++ b/plugins/views_plugin_display_extender.inc
@@ -0,0 +1,63 @@
+<?php
+/**
+ * @todo
+ */
+class views_plugin_display_extender extends views_plugin {
+  /**
+   * Initialize the plugin.
+   *
+   * @param $view
+   *   The view object.
+   * @param $display
+   *   The display handler.
+   */
+  function init(&$view, &$display) {
+    $this->view = &$view;
+    $this->display = &$display;
+
+    if (is_object($display->handler)) {
+      // @todo figure this out
+      // $options = $display->handler->get_option('access');
+      // Overlay incoming options on top of defaults
+      // $this->unpack_options($this->options, $options);
+    }
+  }
+
+  /**
+  * Provide a form to edit options for this plugin.
+  */
+  function options_form(&$form, &$form_state) { }
+
+  /**
+  * Validate the options form.
+  */
+  function options_validate(&$form, &$form_state) { }
+
+  /**
+  * Handle any special handling on the validate form.
+  */
+  function options_submit(&$form, &$form_state) { }
+
+  /**
+   * Set up any variables on the view prior to execution.
+   */
+  function pre_execute() { }
+
+  /**
+   * Inject anything into the query that the display_extender handler needs.
+   */
+  function query() { }
+
+  /**
+   * Provide the default summary for options in the views UI.
+   *
+   * This output is returned as an array.
+   */
+  function options_summary(&$categories, &$options) { }
+
+  /**
+   * Static member function to list which sections are defaultable
+   * and what items each section contains.
+   */
+  function defaultable_sections(&$sections, $section = NULL) { }
+}
diff --git a/views.info b/views.info
index 13d5244..990027c 100644
--- a/views.info
+++ b/views.info
@@ -201,6 +201,7 @@ files[] = plugins/views_plugin_display.inc
 files[] = plugins/views_plugin_display_attachment.inc
 files[] = plugins/views_plugin_display_block.inc
 files[] = plugins/views_plugin_display_default.inc
+files[] = plugins/views_plugin_display_extender.inc
 files[] = plugins/views_plugin_display_feed.inc
 files[] = plugins/views_plugin_exposed_form_basic.inc
 files[] = plugins/views_plugin_exposed_form.inc
