diff --git a/includes/admin.inc b/includes/admin.inc
index 467c5be..f1b3afd 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -2053,7 +2053,7 @@ function views_ui_import_validate($form, &$form_state) {
         drupal_set_message(t('Style plugin @plugin is not available.', array('@plugin' => $display->handler->get_option('style_plugin'))), 'error');
         $broken = TRUE;
       }
-      elseif ($plugin->uses_row_plugin()) {
+      elseif ($plugin->usesRowPlugin()) {
         $plugin = views_get_plugin('row', $display->handler->get_option('row_plugin'));
         if (!$plugin) {
           drupal_set_message(t('Row plugin @plugin is not available.', array('@plugin' => $display->handler->get_option('row_plugin'))), 'error');
@@ -2209,7 +2209,7 @@ function views_ui_edit_form_get_bucket($type, $view, $display) {
     case 'field':
       // Fetch the style plugin info so we know whether to list fields or not.
       $style_plugin = $display->handler->get_plugin();
-      $uses_fields = $style_plugin && $style_plugin->uses_fields();
+      $uses_fields = $style_plugin && $style_plugin->usesFields();
       if (!$uses_fields) {
         $build['fields'][] = array(
           '#markup' => t('The selected style or row format does not utilize fields.'),
diff --git a/lib/Drupal/views/Plugin/views/PluginBase.php b/lib/Drupal/views/Plugin/views/PluginBase.php
index eb2b395..b234813 100644
--- a/lib/Drupal/views/Plugin/views/PluginBase.php
+++ b/lib/Drupal/views/Plugin/views/PluginBase.php
@@ -46,6 +46,13 @@ abstract class PluginBase extends ComponentPluginBase {
    */
   public $localization_keys;
 
+   /**
+   * Denotes whether the plugin has an additional options form.
+   *
+   * @var bool
+   */
+  protected $usesOptions = FALSE;
+
   /**
    * Constructs a Plugin object.
    */
@@ -452,4 +459,11 @@ abstract class PluginBase extends ComponentPluginBase {
     return check_plain($this->definition['title']);
   }
 
+  /**
+   * Returns the usesOptions property.
+   */
+  public function usesOptions() {
+    return $this->usesOptions;
+  }
+
 }
diff --git a/lib/Drupal/views/Plugin/views/access/Permission.php b/lib/Drupal/views/Plugin/views/access/Permission.php
index 82620b2..5019fc4 100644
--- a/lib/Drupal/views/Plugin/views/access/Permission.php
+++ b/lib/Drupal/views/Plugin/views/access/Permission.php
@@ -19,12 +19,16 @@ use Drupal\Core\Annotation\Translation;
  *   id = "perm",
  *   title = @Translation("Permission"),
  *   help = @Translation("Access will be granted to users with the specified permission string."),
- *   help_topic = "access-perm",
- *   uses_options = TRUE
+ *   help_topic = "access-perm"
  * )
  */
 class Permission extends AccessPluginBase {
 
+  /**
+   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
+   */
+  protected $usesOptions = TRUE;
+
   function access($account) {
     return views_check_perm($this->options['perm'], $account);
   }
diff --git a/lib/Drupal/views/Plugin/views/access/Role.php b/lib/Drupal/views/Plugin/views/access/Role.php
index ddfe290..93f5927 100644
--- a/lib/Drupal/views/Plugin/views/access/Role.php
+++ b/lib/Drupal/views/Plugin/views/access/Role.php
@@ -19,12 +19,16 @@ use Drupal\Core\Annotation\Translation;
  *   id = "role",
  *   title = @Translation("Role"),
  *   help = @Translation("Access will be granted to users with any of the specified roles."),
- *   help_topic = "access-role",
- *   uses_options = TRUE
+ *   help_topic = "access-role"
  * )
  */
 class Role extends AccessPluginBase {
 
+  /**
+   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
+   */
+  protected $usesOptions = TRUE;
+
   function access($account) {
     return views_check_roles(array_filter($this->options['role']), $account);
   }
diff --git a/lib/Drupal/views/Plugin/views/argument/ArgumentPluginBase.php b/lib/Drupal/views/Plugin/views/argument/ArgumentPluginBase.php
index 36e542f..e929efd 100644
--- a/lib/Drupal/views/Plugin/views/argument/ArgumentPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/argument/ArgumentPluginBase.php
@@ -678,10 +678,10 @@ abstract class ArgumentPluginBase extends HandlerBase {
     );
 
     foreach ($summary_plugins as $id => $info) {
-      if (empty($info['uses_options'])) {
+      $plugin = $this->get_plugin('style', $id);
+      if (!$plugin->usesOptions()) {
         continue;
       }
-      $plugin = $this->get_plugin('style', $id);
       if ($plugin) {
         $form['summary']['options'][$id] = array(
           '#prefix' => '<div id="edit-options-summary-options-' . $id . '-wrapper">',
diff --git a/lib/Drupal/views/Plugin/views/cache/Time.php b/lib/Drupal/views/Plugin/views/cache/Time.php
index a9260ef..00dfa2a 100644
--- a/lib/Drupal/views/Plugin/views/cache/Time.php
+++ b/lib/Drupal/views/Plugin/views/cache/Time.php
@@ -19,12 +19,16 @@ use Drupal\Core\Annotation\Translation;
  *   id = "time",
  *   title = @Translation("Time-based"),
  *   help = @Translation("Simple time-based caching of data."),
- *   help_topic = "cache-time",
- *   uses_options = TRUE
+ *   help_topic = "cache-time"
  * )
  */
 class Time extends CachePluginBase {
 
+  /**
+   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
+   */
+  protected $usesOptions = TRUE;
+
   function option_definition() {
     $options = parent::option_definition();
     $options['results_lifespan'] = array('default' => 3600);
diff --git a/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php b/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
index 8c6483c..b35f7cb 100644
--- a/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
@@ -45,6 +45,11 @@ abstract class DisplayPluginBase extends PluginBase {
   var $extender = array();
 
   /**
+   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
+   */
+  protected $usesOptions = TRUE;
+
+  /**
    * Stores the rendered output of the display.
    *
    * @see View::render
@@ -838,11 +843,13 @@ abstract class DisplayPluginBase extends PluginBase {
 
   /**
    * Determine if the display's style uses fields.
+   *
+   * @return bool
    */
-  function uses_fields() {
-    $plugin = $this->get_plugin();
+  function usesFields() {
+    $plugin = $this->get_plugin('style');
     if ($plugin) {
-      return $plugin->uses_fields();
+      return $plugin->usesFields();
     }
   }
 
@@ -1209,11 +1216,11 @@ abstract class DisplayPluginBase extends PluginBase {
     );
 
     // This adds a 'Settings' link to the style_options setting if the style has options.
-    if (!empty($style_plugin['uses_options'])) {
+    if ($style_plugin_instance->usesOptions()) {
       $options['style_plugin']['links']['style_options'] = t('Change settings for this format');
     }
 
-    if (!empty($style_plugin['uses_row_plugin'])) {
+    if ($style_plugin_instance->usesRowPlugin()) {
       $manager = new ViewsPluginManager('row');
       $row_plugin = $manager->getDefinition($this->get_option('row_plugin'));
       $row_plugin_instance = $this->get_plugin('row');
@@ -1228,7 +1235,7 @@ abstract class DisplayPluginBase extends PluginBase {
         'desc' => t('Change the way each row in the view is styled.'),
       );
       // This adds a 'Settings' link to the row_options setting if the row style has options.
-      if (!empty($row_plugin['uses_options'])) {
+      if ($row_plugin_instance->usesOptions()) {
         $options['row_plugin']['links']['row_options'] = t('Change settings for this style');
       }
     }
@@ -1278,7 +1285,7 @@ abstract class DisplayPluginBase extends PluginBase {
       $options['pager']['title'] = t('Items to display');
     }
 
-    if (!empty($pager_plugin->definition['uses_options'])) {
+    if ($pager_plugin->usesOptions()) {
       $options['pager']['links']['pager_options'] = t('Change settings for this pager type.');
     }
 
@@ -1340,7 +1347,7 @@ abstract class DisplayPluginBase extends PluginBase {
       'desc' => t('Specify access control type for this display.'),
     );
 
-    if (!empty($access_plugin->definition['uses_options'])) {
+    if ($access_plugin->usesOptions()) {
       $options['access']['links']['access_options'] = t('Change settings for this access type.');
     }
 
@@ -1360,11 +1367,11 @@ abstract class DisplayPluginBase extends PluginBase {
       'desc' => t('Specify caching type for this display.'),
     );
 
-    if (!empty($cache_plugin->definition['uses_options'])) {
+    if ($cache_plugin->usesOptions()) {
       $options['cache']['links']['cache_options'] = t('Change settings for this caching type.');
     }
 
-    if (!empty($access_plugin->definition['uses_options'])) {
+    if ($access_plugin->usesOptions()) {
       $options['access']['links']['access_options'] = t('Change settings for this access type.');
     }
 
@@ -1405,7 +1412,7 @@ abstract class DisplayPluginBase extends PluginBase {
       'desc' => t('Select the kind of exposed filter to use.'),
     );
 
-    if (!empty($exposed_form_plugin->definition['uses_options'])) {
+    if ($exposed_form_plugin->usesOptions()) {
       $options['exposed_form']['links']['exposed_form_options'] = t('Exposed form settings for this exposed form style.');
     }
 
@@ -1586,8 +1593,8 @@ abstract class DisplayPluginBase extends PluginBase {
           '#default_value' => $access['type'],
         );
 
-        $access_plugin = views_fetch_plugin_data('access', $access['type']);
-        if (!empty($access_plugin['uses_options'])) {
+        $access_plugin = $this->get_plugin('access');
+        if ($access_plugin->usesOptions()) {
           $form['markup'] = array(
             '#prefix' => '<div class="form-item description">',
             '#markup' => t('You may also adjust the !settings for the currently selected access restriction.', array('!settings' => $this->option_link(t('settings'), 'access_options'))),
@@ -1629,8 +1636,8 @@ abstract class DisplayPluginBase extends PluginBase {
           '#default_value' => $cache['type'],
         );
 
-        $cache_plugin = views_fetch_plugin_data('cache', $cache['type']);
-        if (!empty($cache_plugin['uses_options'])) {
+        $cache_plugin = $this->get_plugin('cache');
+        if ($cache_plugin->usesOptions()) {
           $form['markup'] = array(
             '#prefix' => '<div class="form-item description">',
             '#suffix' => '</div>',
@@ -1738,8 +1745,8 @@ abstract class DisplayPluginBase extends PluginBase {
           '#description' => t('If the style you choose has settings, be sure to click the settings button that will appear next to it in the View summary.'),
         );
 
-        $style_plugin = $manager->getDefinition($this->get_option('style_plugin'));
-        if (!empty($style_plugin['uses_options'])) {
+        $style_plugin = $this->get_plugin('style');
+        if ($style_plugin->usesOptions()) {
           $form['markup'] = array(
             '#markup' => '<div class="form-item description">' . t('You may also adjust the !settings for the currently selected style.', array('!settings' => $this->option_link(t('settings'), 'style_options'))) . '</div>',
           );
@@ -1782,8 +1789,8 @@ abstract class DisplayPluginBase extends PluginBase {
           '#default_value' => $this->get_option('row_plugin'),
         );
 
-        $row_plugin = views_fetch_plugin_data('row', $this->get_option('row_plugin'));
-        if (!empty($row_plugin['uses_options'])) {
+        $row_plugin = $this->get_plugin('row');
+        if ($row_plugin->usesOptions()) {
           $form['markup'] = array(
             '#markup' => '<div class="form-item description">' . t('You may also adjust the !settings for the currently selected row style.', array('!settings' => $this->option_link(t('settings'), 'row_options'))) . '</div>',
           );
@@ -1942,7 +1949,7 @@ abstract class DisplayPluginBase extends PluginBase {
             }
           }
 
-          if ($plugin->uses_row_plugin()) {
+          if ($plugin->usesRowPlugin()) {
             $row_plugin = $this->get_plugin('row');
             if ($row_plugin) {
               $funcs[] = $this->option_link(t('Row style output'), 'analyze-theme-row') . ': ' . $this->format_themes($row_plugin->theme_functions());
@@ -1955,7 +1962,7 @@ abstract class DisplayPluginBase extends PluginBase {
             }
           }
 
-          if ($plugin->uses_fields()) {
+          if ($plugin->usesFields()) {
             foreach ($this->get_handlers('field') as $id => $handler) {
               $funcs[] = $this->option_link(t('Field @field (ID: @id)', array('@field' => $handler->ui_name(), '@id' => $id)), 'analyze-theme-field') . ': ' . $this->format_themes($handler->theme_functions());
             }
@@ -2137,8 +2144,8 @@ abstract class DisplayPluginBase extends PluginBase {
           '#default_value' => $exposed_form['type'],
         );
 
-        $exposed_form_plugin = views_fetch_plugin_data('exposed_form', $exposed_form['type']);
-        if (!empty($exposed_form_plugin['uses_options'])) {
+        $exposed_form_plugin = $this->get_plugin('exposed_form');
+        if ($exposed_form_plugin->usesOptions()) {
           $form['markup'] = array(
             '#prefix' => '<div class="form-item description">',
             '#suffix' => '</div>',
@@ -2173,8 +2180,8 @@ abstract class DisplayPluginBase extends PluginBase {
           '#default_value' => $pager['type'],
         );
 
-        $pager_plugin = views_fetch_plugin_data('pager', $pager['type'], array($this->view->base_table));
-        if (!empty($pager_plugin['uses_options'])) {
+        $pager_plugin = $this->get_plugin('pager');
+        if ($pager_plugin->usesOptions()) {
           $form['markup'] = array(
             '#prefix' => '<div class="form-item description">',
             '#suffix' => '</div>',
@@ -2333,7 +2340,7 @@ abstract class DisplayPluginBase extends PluginBase {
           if ($plugin) {
             $access = array('type' => $form_state['values']['access']['type']);
             $this->set_option('access', $access);
-            if (!empty($plugin->definition['uses_options'])) {
+            if ($plugin->usesOptions()) {
               views_ui_add_form_to_stack('display', $this->view, $this->display->id, array('access_options'));
             }
           }
@@ -2354,7 +2361,7 @@ abstract class DisplayPluginBase extends PluginBase {
           if ($plugin) {
             $cache = array('type' => $form_state['values']['cache']['type']);
             $this->set_option('cache', $cache);
-            if (!empty($plugin->definition['uses_options'])) {
+            if ($plugin->usesOptions()) {
               views_ui_add_form_to_stack('display', $this->view, $this->display->id, array('cache_options'));
             }
           }
@@ -2412,7 +2419,7 @@ abstract class DisplayPluginBase extends PluginBase {
             $this->set_option('row_options', array());
 
             // send ajax form to options page if we use it.
-            if (!empty($plugin->definition['uses_options'])) {
+            if ($plugin->usesOptions()) {
               views_ui_add_form_to_stack('display', $this->view, $this->display->id, array('row_options'));
             }
           }
@@ -2427,7 +2434,7 @@ abstract class DisplayPluginBase extends PluginBase {
             $this->set_option($section, $form_state['values'][$section]);
             $this->set_option('style_options', array());
             // send ajax form to options page if we use it.
-            if (!empty($plugin->definition['uses_options'])) {
+            if ($plugin->usesOptions()) {
               views_ui_add_form_to_stack('display', $this->view, $this->display->id, array('style_options'));
             }
           }
@@ -2453,7 +2460,7 @@ abstract class DisplayPluginBase extends PluginBase {
           if ($plugin) {
             $exposed_form = array('type' => $form_state['values']['exposed_form']['type'], 'options' => array());
             $this->set_option('exposed_form', $exposed_form);
-            if (!empty($plugin->definition['uses_options'])) {
+            if ($plugin->usesOptions()) {
               views_ui_add_form_to_stack('display', $this->view, $this->display->id, array('exposed_form_options'));
             }
           }
@@ -2480,7 +2487,7 @@ abstract class DisplayPluginBase extends PluginBase {
 
             $pager = array('type' => $form_state['values']['pager']['type'], 'options' => $plugin->options);
             $this->set_option('pager', $pager);
-            if (!empty($plugin->definition['uses_options'])) {
+            if ($plugin->usesOptions()) {
               views_ui_add_form_to_stack('display', $this->view, $this->display->id, array('pager_options'));
             }
           }
@@ -2724,7 +2731,7 @@ abstract class DisplayPluginBase extends PluginBase {
   function validate() {
     $errors = array();
     // Make sure displays that use fields HAVE fields.
-    if ($this->uses_fields()) {
+    if ($this->usesFields()) {
       $fields = FALSE;
       foreach ($this->get_handlers('field') as $field) {
         if (empty($field->options['exclude'])) {
@@ -2941,7 +2948,7 @@ abstract class DisplayPluginBase extends PluginBase {
       $plugin = $style_plugin;
     }
     else {
-      if (!$style_plugin || !$style_plugin->uses_row_plugin()) {
+      if (!$style_plugin || !$style_plugin->usesRowPlugin()) {
         return;
       }
 
@@ -3002,7 +3009,7 @@ abstract class DisplayPluginBase extends PluginBase {
       $plugin = $style_plugin;
     }
     else {
-      if (!$style_plugin || !$style_plugin->uses_row_plugin()) {
+      if (!$style_plugin || !$style_plugin->usesRowPlugin()) {
         return;
       }
 
diff --git a/lib/Drupal/views/Plugin/views/exposed_form/Basic.php b/lib/Drupal/views/Plugin/views/exposed_form/Basic.php
index 9d56944..d722eb0 100644
--- a/lib/Drupal/views/Plugin/views/exposed_form/Basic.php
+++ b/lib/Drupal/views/Plugin/views/exposed_form/Basic.php
@@ -19,7 +19,6 @@ use Drupal\Core\Annotation\Translation;
  *   id = "basic",
  *   title = @Translation("Basic"),
  *   help = @Translation("Basic exposed form"),
- *   uses_options = TRUE,
  *   help_topic = "exposed-form-basic"
  * )
  */
diff --git a/lib/Drupal/views/Plugin/views/exposed_form/ExposedFormPluginBase.php b/lib/Drupal/views/Plugin/views/exposed_form/ExposedFormPluginBase.php
index 3c0da96..a36ee66 100644
--- a/lib/Drupal/views/Plugin/views/exposed_form/ExposedFormPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/exposed_form/ExposedFormPluginBase.php
@@ -25,6 +25,11 @@ use Drupal\views\Plugin\views\PluginBase;
 abstract class ExposedFormPluginBase extends PluginBase {
 
   /**
+   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
+   */
+  protected $usesOptions = TRUE;
+
+  /**
    * Initialize the plugin.
    *
    * @param $view
diff --git a/lib/Drupal/views/Plugin/views/exposed_form/InputRequired.php b/lib/Drupal/views/Plugin/views/exposed_form/InputRequired.php
index b66645a..d619fba 100644
--- a/lib/Drupal/views/Plugin/views/exposed_form/InputRequired.php
+++ b/lib/Drupal/views/Plugin/views/exposed_form/InputRequired.php
@@ -19,7 +19,6 @@ use Drupal\Core\Annotation\Translation;
  *   id = "input_required",
  *   title = @Translation("Input required"),
  *   help = @Translation("An exposed form that only renders a view if the form contains user input."),
- *   uses_options = TRUE,
  *   help_topic = "exposed-form-input-required"
  * )
  */
diff --git a/lib/Drupal/views/Plugin/views/filter/Combine.php b/lib/Drupal/views/Plugin/views/filter/Combine.php
index e0e99c9..fb25716 100644
--- a/lib/Drupal/views/Plugin/views/filter/Combine.php
+++ b/lib/Drupal/views/Plugin/views/filter/Combine.php
@@ -37,7 +37,7 @@ class Combine extends String {
     $this->view->init_style();
 
     // Allow to choose all fields as possible
-    if ($this->view->style_plugin->uses_fields()) {
+    if ($this->view->style_plugin->usesFields()) {
       $options = array();
       foreach ($this->view->display_handler->get_handlers('field') as $name => $field) {
         $options[$name] = $field->ui_name(TRUE);
diff --git a/lib/Drupal/views/Plugin/views/pager/Full.php b/lib/Drupal/views/Plugin/views/pager/Full.php
index 9eadd55..b39cd2a 100644
--- a/lib/Drupal/views/Plugin/views/pager/Full.php
+++ b/lib/Drupal/views/Plugin/views/pager/Full.php
@@ -20,8 +20,7 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Paged output, full pager"),
  *   short_title = @Translation("Full"),
  *   help = @Translation("Paged output, full Drupal style"),
- *   help_topic = "pager-full",
- *   uses_options = TRUE
+ *   help_topic = "pager-full"
  * )
  */
 class Full extends PagerPluginBase {
diff --git a/lib/Drupal/views/Plugin/views/pager/Mini.php b/lib/Drupal/views/Plugin/views/pager/Mini.php
index d1c3434..d62a5b7 100644
--- a/lib/Drupal/views/Plugin/views/pager/Mini.php
+++ b/lib/Drupal/views/Plugin/views/pager/Mini.php
@@ -20,8 +20,7 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Paged output, mini pager"),
  *   short_title = @Translation("Mini"),
  *   help = @Translation("Use the mini pager output."),
- *   help_topic = "pager-mini",
- *   uses_options = TRUE
+ *   help_topic = "pager-mini"
  * )
  */
 class Mini extends PagerPluginBase {
diff --git a/lib/Drupal/views/Plugin/views/pager/None.php b/lib/Drupal/views/Plugin/views/pager/None.php
index 28bba40..dc13dbc 100644
--- a/lib/Drupal/views/Plugin/views/pager/None.php
+++ b/lib/Drupal/views/Plugin/views/pager/None.php
@@ -20,7 +20,6 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Display all items"),
  *   help = @Translation("Display all items that this view might find."),
  *   help_topic = "pager-none",
- *   uses_options = TRUE,
  *   type = "basic"
  * )
  */
diff --git a/lib/Drupal/views/Plugin/views/pager/PagerPluginBase.php b/lib/Drupal/views/Plugin/views/pager/PagerPluginBase.php
index e7cee8b..d5d2de5 100644
--- a/lib/Drupal/views/Plugin/views/pager/PagerPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/pager/PagerPluginBase.php
@@ -27,6 +27,11 @@ abstract class PagerPluginBase extends PluginBase {
   var $total_items = 0;
 
   /**
+   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
+   */
+  protected $usesOptions = TRUE;
+
+  /**
    * Initialize the plugin.
    *
    * @param $view
diff --git a/lib/Drupal/views/Plugin/views/pager/Some.php b/lib/Drupal/views/Plugin/views/pager/Some.php
index 6e92c3b..030fabe 100644
--- a/lib/Drupal/views/Plugin/views/pager/Some.php
+++ b/lib/Drupal/views/Plugin/views/pager/Some.php
@@ -20,7 +20,6 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Display a specified number of items"),
  *   help = @Translation("Display a limited number items that this view might find."),
  *   help_topic = "pager-some",
- *   uses_options = TRUE,
  *   type = "basic"
  * )
  */
diff --git a/lib/Drupal/views/Plugin/views/row/Fields.php b/lib/Drupal/views/Plugin/views/row/Fields.php
index 2c7bd37..04bf66f 100644
--- a/lib/Drupal/views/Plugin/views/row/Fields.php
+++ b/lib/Drupal/views/Plugin/views/row/Fields.php
@@ -23,14 +23,19 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Fields"),
  *   help = @Translation("Displays the fields with an optional template."),
  *   theme = "views_view_fields",
- *   uses_fields = TRUE,
- *   uses_options = TRUE,
  *   type = "normal",
  *   help_topic = "style-row-fields"
  * )
  */
 class Fields extends RowPluginBase {
 
+  /**
+   * Does the row plugin support to add fields to it's output.
+   *
+   * @var bool
+   */
+  protected $usesFields = TRUE;
+
   function option_definition() {
     $options = parent::option_definition();
 
diff --git a/lib/Drupal/views/Plugin/views/row/RowPluginBase.php b/lib/Drupal/views/Plugin/views/row/RowPluginBase.php
index f51d232..eb6af66 100644
--- a/lib/Drupal/views/Plugin/views/row/RowPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/row/RowPluginBase.php
@@ -27,6 +27,18 @@ use Drupal\views\Plugin\views\PluginBase;
 abstract class RowPluginBase extends PluginBase {
 
   /**
+   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
+   */
+  protected $usesOptions = TRUE;
+
+  /**
+   * Does the row plugin support to add fields to it's output.
+   *
+   * @var bool
+   */
+  protected $usesFields = FALSE;
+
+  /**
    * Initialize the row plugin.
    */
   function init(&$view, &$display, $options = NULL) {
@@ -37,8 +49,13 @@ abstract class RowPluginBase extends PluginBase {
     $this->unpack_options($this->options, isset($options) ? $options : $display->handler->get_option('row_options'));
   }
 
-  function uses_fields() {
-    return !empty($this->definition['uses_fields']);
+  /**
+   * Returns the usesFields property.
+   *
+   * @return bool
+   */
+  function usesFields() {
+    return $this->usesFields;
   }
 
 
diff --git a/lib/Drupal/views/Plugin/views/row/RssFields.php b/lib/Drupal/views/Plugin/views/row/RssFields.php
index d4246ba..14d89c5 100644
--- a/lib/Drupal/views/Plugin/views/row/RssFields.php
+++ b/lib/Drupal/views/Plugin/views/row/RssFields.php
@@ -18,14 +18,19 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Fields"),
  *   help = @Translation("Display fields as RSS items."),
  *   theme = "views_view_row_rss",
- *   uses_fields = TRUE,
- *   uses_options = TRUE,
  *   type = "feed",
  *   help_topic = "style-row-fields"
  * )
  */
 class RssFields extends RowPluginBase {
 
+  /**
+   * Does the row plugin support to add fields to it's output.
+   *
+   * @var bool
+   */
+  protected $usesFields = TRUE;
+
   function option_definition() {
     $options = parent::option_definition();
     $options['title_field'] = array('default' => '');
diff --git a/lib/Drupal/views/Plugin/views/style/DefaultStyle.php b/lib/Drupal/views/Plugin/views/style/DefaultStyle.php
index a7ce343..05e2cb3 100644
--- a/lib/Drupal/views/Plugin/views/style/DefaultStyle.php
+++ b/lib/Drupal/views/Plugin/views/style/DefaultStyle.php
@@ -21,10 +21,7 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Unformatted list"),
  *   help = @Translation("Displays rows one after another."),
  *   theme = "views_view_unformatted",
- *   uses_row_plugin = TRUE,
- *   uses_row_class = TRUE,
  *   uses_grouping = TRUE,
- *   uses_options = TRUE,
  *   type = "normal",
  *   help_topic = "style-unformatted"
  * )
@@ -32,6 +29,20 @@ use Drupal\Core\Annotation\Translation;
 class DefaultStyle extends StylePluginBase {
 
   /**
+   * Does the style plugin allows to use style plugins.
+   *
+   * @var bool
+   */
+  protected $usesRowPlugin = TRUE;
+
+  /**
+   * Does the style plugin support custom css class for the rows.
+   *
+   * @var bool
+   */
+  protected $usesRowClass = TRUE;
+
+  /**
    * Set default options
    */
   function options(&$options) {
diff --git a/lib/Drupal/views/Plugin/views/style/DefaultSummary.php b/lib/Drupal/views/Plugin/views/style/DefaultSummary.php
index 1236adf..916bd7a 100644
--- a/lib/Drupal/views/Plugin/views/style/DefaultSummary.php
+++ b/lib/Drupal/views/Plugin/views/style/DefaultSummary.php
@@ -22,7 +22,6 @@ use Drupal\Core\Annotation\Translation;
  *   help = @Translation("Displays the default summary as a list."),
  *   theme = "views_view_summary",
  *   type = "summary",
- *   uses_options = TRUE,
  *   help_topic = "style-summary"
  * )
  */
diff --git a/lib/Drupal/views/Plugin/views/style/Grid.php b/lib/Drupal/views/Plugin/views/style/Grid.php
index b5146c9..8664deb 100644
--- a/lib/Drupal/views/Plugin/views/style/Grid.php
+++ b/lib/Drupal/views/Plugin/views/style/Grid.php
@@ -20,10 +20,6 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Grid"),
  *   help = @Translation("Displays rows in a grid."),
  *   theme = "views_view_grid",
- *   uses_fields = FALSE,
- *   uses_row_plugin = TRUE,
- *   uses_row_class = TRUE,
- *   uses_options = TRUE,
  *   type = "normal",
  *   help_topic = "style-grid"
  * )
@@ -31,6 +27,20 @@ use Drupal\Core\Annotation\Translation;
 class Grid extends StylePluginBase {
 
   /**
+   * Does the style plugin allows to use style plugins.
+   *
+   * @var bool
+   */
+  protected $usesRowPlugin = TRUE;
+
+  /**
+   * Does the style plugin support custom css class for the rows.
+   *
+   * @var bool
+   */
+  protected $usesRowClass = TRUE;
+
+  /**
    * Set default options
    */
   function option_definition() {
diff --git a/lib/Drupal/views/Plugin/views/style/HtmlList.php b/lib/Drupal/views/Plugin/views/style/HtmlList.php
index 9760a94..471bda7 100644
--- a/lib/Drupal/views/Plugin/views/style/HtmlList.php
+++ b/lib/Drupal/views/Plugin/views/style/HtmlList.php
@@ -20,9 +20,6 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("HTML List"),
  *   help = @Translation("Displays rows as HTML list."),
  *   theme = "views_view_list",
- *   uses_row_plugin = TRUE,
- *   uses_row_class = TRUE,
- *   uses_options = TRUE,
  *   type = "normal",
  *   help_topic = "style-list"
  * )
@@ -30,6 +27,20 @@ use Drupal\Core\Annotation\Translation;
 class HtmlList extends StylePluginBase {
 
   /**
+   * Does the style plugin allows to use style plugins.
+   *
+   * @var bool
+   */
+  protected $usesRowPlugin = TRUE;
+
+  /**
+   * Does the style plugin support custom css class for the rows.
+   *
+   * @var bool
+   */
+  protected $usesRowClass = TRUE;
+
+  /**
    * Set default options
    */
   function option_definition() {
diff --git a/lib/Drupal/views/Plugin/views/style/Rss.php b/lib/Drupal/views/Plugin/views/style/Rss.php
index 0586c6a..d6a8529 100644
--- a/lib/Drupal/views/Plugin/views/style/Rss.php
+++ b/lib/Drupal/views/Plugin/views/style/Rss.php
@@ -20,14 +20,19 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("RSS Feed"),
  *   help = @Translation("Generates an RSS feed from a view."),
  *   theme = "views_view_rss",
- *   uses_row_plugin = TRUE,
- *   uses_options = TRUE,
  *   type = "feed",
  *   help_topic = "style-rss"
  * )
  */
 class Rss extends StylePluginBase {
 
+  /**
+   * Does the style plugin for itself support to add fields to it's output.
+   *
+   * @var bool
+   */
+  protected $usesRowPlugin = TRUE;
+
   function attach_to($display_id, $path, $title) {
     $display = $this->view->display[$display_id]->handler;
     $url_options = array();
diff --git a/lib/Drupal/views/Plugin/views/style/StylePluginBase.php b/lib/Drupal/views/Plugin/views/style/StylePluginBase.php
index 48ee9b7..aa9c0b0 100644
--- a/lib/Drupal/views/Plugin/views/style/StylePluginBase.php
+++ b/lib/Drupal/views/Plugin/views/style/StylePluginBase.php
@@ -31,6 +31,11 @@ use Drupal\Core\Annotation\Translation;
 abstract class StylePluginBase extends PluginBase {
 
   /**
+   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
+   */
+  protected $usesOptions = TRUE;
+
+  /**
    * Store all available tokens row rows.
    */
   var $row_tokens = array();
@@ -44,6 +49,30 @@ abstract class StylePluginBase extends PluginBase {
   var $row_plugin;
 
   /**
+   * Does the style plugin allows to use style plugins.
+   *
+   * @var bool
+   */
+  protected $usesRowPlugin = FALSE;
+
+  /**
+   * Does the style plugin support custom css class for the rows.
+   *
+   * @var bool
+   */
+  protected $usesRowClass = FALSE;
+
+  /**
+   * Does the style plugin for itself support to add fields to it's output.
+   *
+   * This option only makes sense on style plugins without row plugins, like
+   * for example table.
+   *
+   * @var bool
+   */
+  protected $usesFields = FALSE;
+
+  /**
    * Initialize a style plugin.
    *
    * @param $view
@@ -59,7 +88,7 @@ abstract class StylePluginBase extends PluginBase {
     // Overlay incoming options on top of defaults
     $this->unpack_options($this->options, isset($options) ? $options : $display->handler->get_option('style_options'));
 
-    if ($this->uses_row_plugin() && $display->handler->get_option('row_plugin')) {
+    if ($this->usesRowPlugin() && $display->handler->get_option('row_plugin')) {
       $this->row_plugin = $display->handler->get_plugin('row');
     }
 
@@ -81,17 +110,22 @@ abstract class StylePluginBase extends PluginBase {
   }
 
   /**
-   * Return TRUE if this style also uses a row plugin.
+   * Returns the usesRowPlugin property.
+   *
+   * @return bool
    */
-  function uses_row_plugin() {
-    return !empty($this->definition['uses_row_plugin']);
+  function usesRowPlugin() {
+    return $this->usesRowPlugin;
+
   }
 
   /**
-   * Return TRUE if this style also uses a row plugin.
+   * Returns the usesRowClass property.
+   *
+   * @return bool
    */
-  function uses_row_class() {
-    return !empty($this->definition['uses_row_class']);
+  function usesRowClass() {
+    return $this->usesRowClass;
   }
 
   /**
@@ -99,15 +133,15 @@ abstract class StylePluginBase extends PluginBase {
    *
    * @return bool
    */
-  function uses_fields() {
+  function usesFields() {
     // If we use a row plugin, ask the row plugin. Chances are, we don't
     // care, it does.
     $row_uses_fields = FALSE;
-    if ($this->uses_row_plugin() && !empty($this->row_plugin)) {
-      $row_uses_fields = $this->row_plugin->uses_fields();
+    if ($this->usesRowPlugin() && !empty($this->row_plugin)) {
+      $row_uses_fields = $this->row_plugin->usesFields();
     }
     // Otherwise, check the definition or the option.
-    return $row_uses_fields || !empty($this->definition['uses_fields']) || !empty($this->options['uses_fields']);
+    return $row_uses_fields || $this->usesFields || !empty($this->options['uses_fields']);
   }
 
   /**
@@ -116,7 +150,7 @@ abstract class StylePluginBase extends PluginBase {
    * Used to ensure we don't fetch tokens when not needed for performance.
    */
   function uses_tokens() {
-    if ($this->uses_row_class()) {
+    if ($this->usesRowClass()) {
       $class = $this->options['row_class'];
       if (strpos($class, '[') !== FALSE || strpos($class, '!') !== FALSE || strpos($class, '%') !== FALSE) {
         return TRUE;
@@ -128,9 +162,9 @@ abstract class StylePluginBase extends PluginBase {
    * Return the token replaced row class for the specified row.
    */
   function get_row_class($row_index) {
-    if ($this->uses_row_class()) {
+    if ($this->usesRowClass()) {
       $class = $this->options['row_class'];
-      if ($this->uses_fields() && $this->view->field) {
+      if ($this->usesFields() && $this->view->field) {
         $class = strip_tags($this->tokenize_value($class, $row_index));
       }
 
@@ -176,7 +210,7 @@ abstract class StylePluginBase extends PluginBase {
   function option_definition() {
     $options = parent::option_definition();
     $options['grouping'] = array('default' => array());
-    if ($this->uses_row_class()) {
+    if ($this->usesRowClass()) {
       $options['row_class'] = array('default' => '');
       $options['default_row_class'] = array('default' => TRUE, 'bool' => TRUE);
       $options['row_class_special'] = array('default' => TRUE, 'bool' => TRUE);
@@ -192,7 +226,7 @@ abstract class StylePluginBase extends PluginBase {
     // themselves from being groupable by setting their "use grouping" definiton
     // key to FALSE.
     // @TODO: Document "uses grouping" in docs.php when docs.php is written.
-    if ($this->uses_fields() && $this->definition['uses_grouping']) {
+    if ($this->usesFields() && $this->definition['uses_grouping']) {
       $options = array('' => t('- None -'));
       $field_labels = $this->display->handler->get_field_labels(TRUE);
       $options += $field_labels;
@@ -246,7 +280,7 @@ abstract class StylePluginBase extends PluginBase {
       }
     }
 
-    if ($this->uses_row_class()) {
+    if ($this->usesRowClass()) {
       $form['row_class'] = array(
         '#title' => t('Row class'),
         '#description' => t('The class to provide on each row.'),
@@ -254,7 +288,7 @@ abstract class StylePluginBase extends PluginBase {
         '#default_value' => $this->options['row_class'],
       );
 
-      if ($this->uses_fields()) {
+      if ($this->usesFields()) {
         $form['row_class']['#description'] .= ' ' . t('You may use field tokens from as per the "Replacement patterns" used in "Rewrite the output of this field" for all fields.');
       }
 
@@ -272,7 +306,7 @@ abstract class StylePluginBase extends PluginBase {
       );
     }
 
-    if (!$this->uses_fields() || !empty($this->options['uses_fields'])) {
+    if (!$this->usesFields() || !empty($this->options['uses_fields'])) {
       $form['uses_fields'] = array(
         '#type' => 'checkbox',
         '#title' => t('Force using fields'),
@@ -323,7 +357,7 @@ abstract class StylePluginBase extends PluginBase {
    * Render the display in this style.
    */
   function render() {
-    if ($this->uses_row_plugin() && empty($this->row_plugin)) {
+    if ($this->usesRowPlugin() && empty($this->row_plugin)) {
       vpr('Drupal\views\Plugin\views\style\StylePluginBase: Missing row plugin');
       return;
     }
@@ -369,7 +403,7 @@ abstract class StylePluginBase extends PluginBase {
       }
       // Render as a record set.
       else {
-        if ($this->uses_row_plugin()) {
+        if ($this->usesRowPlugin()) {
           foreach ($set['rows'] as $index => $row) {
             $this->view->row_index = $index;
             $set['rows'][$index] = $this->row_plugin->render($row);
@@ -518,7 +552,7 @@ abstract class StylePluginBase extends PluginBase {
    *   The result array from $view->result
    */
   function render_fields($result) {
-    if (!$this->uses_fields()) {
+    if (!$this->usesFields()) {
       return;
     }
 
@@ -581,7 +615,7 @@ abstract class StylePluginBase extends PluginBase {
   function validate() {
     $errors = parent::validate();
 
-    if ($this->uses_row_plugin()) {
+    if ($this->usesRowPlugin()) {
       $plugin = $this->display->handler->get_plugin('row');
       if (empty($plugin)) {
         $errors[] = t('Style @style requires a row style but the row plugin is invalid.', array('@style' => $this->definition['title']));
diff --git a/lib/Drupal/views/Plugin/views/style/Table.php b/lib/Drupal/views/Plugin/views/style/Table.php
index 4c1a14b..d4a6516 100644
--- a/lib/Drupal/views/Plugin/views/style/Table.php
+++ b/lib/Drupal/views/Plugin/views/style/Table.php
@@ -20,10 +20,6 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("Table"),
  *   help = @Translation("Displays rows in a table."),
  *   theme = "views_view_table",
- *   uses_row_plugin = FALSE,
- *   uses_row_class = TRUE,
- *   uses_fields = TRUE,
- *   uses_options = TRUE,
  *   type = "normal",
  *   help_topic = "style-table"
  * )
@@ -31,6 +27,27 @@ use Drupal\Core\Annotation\Translation;
 class Table extends StylePluginBase {
 
   /**
+   * Does the style plugin for itself support to add fields to it's output.
+   *
+   * @var bool
+   */
+  protected $usesFields = TRUE;
+
+  /**
+   * Does the style plugin allows to use style plugins.
+   *
+   * @var bool
+   */
+  protected $usesRowPlugin = FALSE;
+
+  /**
+   * Does the style plugin support custom css class for the rows.
+   *
+   * @var bool
+   */
+  protected $usesRowClass = TRUE;
+
+  /**
    * Contains the current active sort column.
    * @var string
    */
diff --git a/lib/Drupal/views/Plugin/views/style/UnformattedSummary.php b/lib/Drupal/views/Plugin/views/style/UnformattedSummary.php
index 968bcc6..3e87f09 100644
--- a/lib/Drupal/views/Plugin/views/style/UnformattedSummary.php
+++ b/lib/Drupal/views/Plugin/views/style/UnformattedSummary.php
@@ -21,7 +21,6 @@ use Drupal\Core\Annotation\Translation;
  *   help = @Translation("Displays the summary unformatted, with option for one after another or inline."),
  *   theme = "views_view_summary_unformatted",
  *   type = "summary",
- *   uses_options = TRUE,
  *   help_topic = "style-summary-unformatted"
  * )
  */
diff --git a/lib/Drupal/views/Plugin/views/wizard/WizardPluginBase.php b/lib/Drupal/views/Plugin/views/wizard/WizardPluginBase.php
index 994f48c..75a79bd 100644
--- a/lib/Drupal/views/Plugin/views/wizard/WizardPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/wizard/WizardPluginBase.php
@@ -278,7 +278,7 @@ abstract class WizardPluginBase implements WizardInterface {
     // @fixme
 
     $style_plugin = views_get_plugin('style', $style);
-    if (isset($style_plugin) && $style_plugin->uses_row_plugin()) {
+    if (isset($style_plugin) && $style_plugin->usesRowPlugin()) {
       $options = $this->row_style_options($type);
       $style_form['row_plugin'] = array(
         '#type' => 'select',
@@ -300,7 +300,7 @@ abstract class WizardPluginBase implements WizardInterface {
         '#theme_wrappers' => array('container'),
       );
     }
-    elseif ($style_plugin->uses_fields()) {
+    elseif ($style_plugin->usesFields()) {
       $style_form['row_plugin'] = array('#markup' => '<span>' . t('of fields') . '</span>');
     }
   }
diff --git a/lib/Drupal/views/View.php b/lib/Drupal/views/View.php
index 6cc8baa..371bc7d 100644
--- a/lib/Drupal/views/View.php
+++ b/lib/Drupal/views/View.php
@@ -1019,7 +1019,7 @@ class View extends ViewsDbObject {
       return FALSE;
     }
 
-    if ($this->style_plugin->uses_fields()) {
+    if ($this->style_plugin->usesFields()) {
       $this->_build('field');
     }
 
@@ -1245,7 +1245,7 @@ class View extends ViewsDbObject {
 
       // Give field handlers the opportunity to perform additional queries
       // using the entire resultset prior to rendering.
-      if ($this->style_plugin->uses_fields()) {
+      if ($this->style_plugin->usesFields()) {
         foreach ($this->field as $id => $handler) {
           if (!empty($this->field[$id])) {
             $this->field[$id]->pre_render($this->result);
diff --git a/lib/Views/aggregator/Plugin/views/row/Rss.php b/lib/Views/aggregator/Plugin/views/row/Rss.php
index cbaef91..08b5c2c 100644
--- a/lib/Views/aggregator/Plugin/views/row/Rss.php
+++ b/lib/Views/aggregator/Plugin/views/row/Rss.php
@@ -20,7 +20,6 @@ use Drupal\Core\Annotation\Translation;
  *   theme = "views_view_row_rss",
  *   title = @Translation("Aggregator item"),
  *   help = @Translation("Display the aggregator item using the data from the original source."),
- *   uses_options = TRUE,
  *   type = "feed",
  *   help_topic = "style-aggregator-rss"
  * )
diff --git a/lib/Views/comment/Plugin/views/row/Rss.php b/lib/Views/comment/Plugin/views/row/Rss.php
index feb6f6f..1dcde07 100644
--- a/lib/Views/comment/Plugin/views/row/Rss.php
+++ b/lib/Views/comment/Plugin/views/row/Rss.php
@@ -21,7 +21,6 @@ use Drupal\Core\Annotation\Translation;
  *   help = @Translation("Display the comment as RSS."),
  *   theme = "views_view_row_rss",
  *   base = {"comment"},
- *   uses_options = TRUE,
  *   type = "feed",
  *   help_topic = "style-comment-rss"
  * )
diff --git a/lib/Views/comment/Plugin/views/row/View.php b/lib/Views/comment/Plugin/views/row/View.php
index 58292a7..642222c 100644
--- a/lib/Views/comment/Plugin/views/row/View.php
+++ b/lib/Views/comment/Plugin/views/row/View.php
@@ -21,7 +21,6 @@ use Drupal\Core\Annotation\Translation;
  *   help = @Translation("Display the comment with standard comment view."),
  *   theme = "views_view_row_comment",
  *   base = {"comment"},
- *   uses_options = TRUE,
  *   type = "normal",
  *   help_topic = "style-comment"
  * )
diff --git a/lib/Views/node/Plugin/views/row/Rss.php b/lib/Views/node/Plugin/views/row/Rss.php
index f96e504..afb3474 100644
--- a/lib/Views/node/Plugin/views/row/Rss.php
+++ b/lib/Views/node/Plugin/views/row/Rss.php
@@ -22,7 +22,6 @@ use stdClass;
  *   help = @Translation("Display the content with standard node view."),
  *   theme = "views_view_row_rss",
  *   base = {"node"},
- *   uses_options = TRUE,
  *   type = "feed",
  *   module = "node",
  *   help_topic = "style-node-rss"
diff --git a/lib/Views/node/Plugin/views/row/View.php b/lib/Views/node/Plugin/views/row/View.php
index 88dd6fe..21ae064 100644
--- a/lib/Views/node/Plugin/views/row/View.php
+++ b/lib/Views/node/Plugin/views/row/View.php
@@ -24,7 +24,6 @@ use Drupal\views\Plugin\views\row\RowPluginBase;
  *   title = @Translation("Content"),
  *   help = @Translation("Display the content with standard node view."),
  *   base = {"node"},
- *   uses_options = TRUE,
  *   type = "normal",
  *   help_topic = "style-node"
  * )
diff --git a/lib/Views/user/Plugin/views/row/View.php b/lib/Views/user/Plugin/views/row/View.php
index edcb49a..7172363 100644
--- a/lib/Views/user/Plugin/views/row/View.php
+++ b/lib/Views/user/Plugin/views/row/View.php
@@ -22,7 +22,6 @@ use Drupal\Core\Annotation\Translation;
  *   title = @Translation("User"),
  *   help = @Translation("Display the user with standard user view."),
  *   base = {"users"},
- *   uses_options = TRUE,
  *   type = "normal",
  *   help_topic = "style-users"
  * )
diff --git a/views.api.php b/views.api.php
index 75d4041..4733d84 100644
--- a/views.api.php
+++ b/views.api.php
@@ -247,7 +247,6 @@
  *       'path' => drupal_get_path('module', 'views') . '/modules/node', // not necessary for most modules
  *       'theme' => 'views_view_row_node',
  *       'base' => array('node'), // only works with 'node' as base.
- *       'uses_options' => TRUE,
  *       'type' => 'normal',
  *     ),
  * @endcode
@@ -537,8 +536,6 @@ function hook_views_data_alter(&$data) {
  *       perspective.
  *     - no_ui: Set to TRUE to denote that the plugin doesn't appear to be
  *       selectable in the ui, though on the api side they still exists.
- *     - uses_options: Set to TRUE to denote that the plugin has an additional
- *       options form.
  *     - help: A short help text, wrapped in t() used as description on the plugin settings form.
  *     - help topic: The name of an entry by advanced help for the plugin.
  *     - theme: The name of a theme suggestion to use for the display.
