diff --git a/lib/Drupal/views/Tests/ViewStorageTest.php b/lib/Drupal/views/Tests/ViewStorageTest.php
index 9c11542a028ab5250de69137c8e000cfed7559b4..d434ed43a848e4baf97e185db2837142ee6365bb 100644
--- a/lib/Drupal/views/Tests/ViewStorageTest.php
+++ b/lib/Drupal/views/Tests/ViewStorageTest.php
@@ -34,6 +34,20 @@ class ViewStorageTest extends WebTestBase {
     'display',
   );
 
+  /**
+   * The Configurable information from entity_get_info().
+   *
+   * @var array
+   */
+  protected $info;
+
+  /**
+   * The Configurable controller.
+   *
+   * @var Drupal\views\ViewStorageController
+   */
+  protected $controller;
+
   /**
    * Modules to enable.
    *
@@ -58,7 +72,7 @@ function testConfigurableCRUD() {
     $this->controller = entity_get_controller('view');
 
     // Confirm that an info array has been returned.
-    $this->assertTrue(!empty($this->info) && is_array($this->info), 'The View  info array is loaded.');
+    $this->assertTrue(!empty($this->info) && is_array($this->info), 'The View info array is loaded.');
 
     // Confirm we have the correct controller class.
     $this->assertTrue($this->controller instanceof ViewStorageController, 'The correct controller is loaded.');
diff --git a/lib/Drupal/views/ViewDisplay.php b/lib/Drupal/views/ViewDisplay.php
index 9b585a8ad1fc1746de71a8deecbb1ac58cd4bdb4..9de15df2bb6d3643897f5397448d681800c69723 100644
--- a/lib/Drupal/views/ViewDisplay.php
+++ b/lib/Drupal/views/ViewDisplay.php
@@ -15,13 +15,27 @@
  */
 class ViewDisplay {
 
+  /**
+   * The display plugin ID.
+   *
+   * @var string
+   */
+  public $display_plugin;
+
   /**
    * The display handler itself, which has all the methods.
    *
-   * @var views_plugin_display
+   * @var Drupal\views\Plugin\views\display\DisplayPluginBase
    */
   public $handler;
 
+  /**
+   * The machine name of this display.
+   *
+   * @var string
+   */
+  public $id;
+
   /**
    * Stores all options of the display, like fields, filters etc.
    *
@@ -29,6 +43,13 @@ class ViewDisplay {
    */
   public $display_options;
 
+  /**
+   * The human-readable name of this display.
+   *
+   * @var string
+   */
+  public $display_title;
+
   /**
    * Constructs a ViewDisplay object.
    *
diff --git a/lib/Drupal/views/ViewStorage.php b/lib/Drupal/views/ViewStorage.php
index c770a4cb71a55db5a3dea48d3d844d3e2971deee..968a7db0efa1b7f3208557b0b010ef64caa66fb5 100644
--- a/lib/Drupal/views/ViewStorage.php
+++ b/lib/Drupal/views/ViewStorage.php
@@ -43,17 +43,20 @@ public function isEnabled() {
   }
 
   /**
-   * Add a new display handler to the view, automatically creating an id.
+   * Adds a new display handler to the view, automatically creating an ID.
    *
-   * @param $plugin_id
-   *   The plugin type from the views plugin data. Defaults to 'page'.
-   * @param $title
-   *   The title of the display; optional, may be filled in from default.
-   * @param $id
-   *   The id to use.
-   * @return
-   *   The key to the display in $view->display, so that the new display
-   *   can be easily located.
+   * @param string $plugin_id
+   *   (optional) The plugin type from the Views plugin annotation. Defaults to
+   *   'page'.
+   * @param string $title
+   *   (optional) The title of the display. Defaults to NULL.
+   * @param string $id
+   *   (optional) The ID to use, e.g., 'default', 'page_1', 'block_2'. Defaults
+   *   to NULL.
+   *
+   * @return string|false
+   *   The key to the display in $view->display, or FALSE if no plugin ID was
+   *   provided.
    */
   function add_display($plugin_id = 'page', $title = NULL, $id = NULL) {
     if (empty($plugin_id)) {
@@ -65,13 +68,11 @@ function add_display($plugin_id = 'page', $title = NULL, $id = NULL) {
       $plugin['title'] = t('Broken');
     }
 
-
     if (empty($id)) {
       $id = $this->generate_display_id($plugin_id);
 
-      // Generate a unique human readable name.
-      // Therefore find out how often the display_plugin already got used,
-      // which is stored at the end of the $id, for example page_1.
+      // Generate a unique human-readable name by inspecting the counter at the
+      // end of the previous display ID, e.g., 'page_1'.
       if ($id !== 'default') {
         preg_match("/[0-9]+/", $id, $count);
         $count = $count[0];
@@ -81,13 +82,11 @@ function add_display($plugin_id = 'page', $title = NULL, $id = NULL) {
       }
 
       if (empty($title)) {
-        // If we had more then one instance already attach the count,
-        // so you end up with "Page" and "Page 2" for example.
+        // If there is no title provided, use the plugin title, and if there are
+        // multiple displays, append the count.
+        $title = $plugin['title'];
         if ($count > 1) {
-          $title = $plugin['title'] . ' ' . $count;
-        }
-        else {
-          $title = $plugin['title'];
+          $title .= ' ' . $count;
         }
       }
     }
@@ -107,44 +106,46 @@ function add_display($plugin_id = 'page', $title = NULL, $id = NULL) {
   }
 
   /**
-   * Generate a display id of a certain plugin type.
+   * Generates a display ID of a certain plugin type.
    *
-   * @param $type
-   *   Which plugin should be used for the new display id.
+   * @param string $plugin_id
+   *   Which plugin should be used for the new display ID.
    */
-  function generate_display_id($type) {
+  function generate_display_id($plugin_id) {
     // 'default' is singular and is unique, so just go with 'default'
     // for it. For all others, start counting.
-    if ($type == 'default') {
+    if ($plugin_id == 'default') {
       return 'default';
     }
-    // Initial id.
-    $id = $type . '_1';
+    // Initial ID.
+    $id = $plugin_id . '_1';
     $count = 1;
 
     // Loop through IDs based upon our style plugin name until
     // we find one that is unused.
     while (!empty($this->display[$id])) {
-      $id = $type . '_' . ++$count;
+      $id = $plugin_id . '_' . ++$count;
     }
 
     return $id;
   }
 
   /**
-   * Generates a unique ID for an item.
+   * Generates a unique ID for an handler instance.
    *
-   * These items are typically fields, filters, sort criteria, or arguments.
+   * These handler instances are typically fields, filters, sort criteria, or
+   * arguments.
    *
-   * @param $requested_id
-   *   The requested ID for the item.
-   * @param $existing_items
-   *   An array of existing items, keyed by their IDs.
+   * @param string $requested_id
+   *   The requested ID for the handler instance.
+   * @param array $existing_items
+   *   An array of existing handler instancess, keyed by their IDs.
    *
-   * @return
-   *   A unique ID. This will be equal to $requested_id if no item with that ID
-   *   already exists. Otherwise, it will be appended with an integer to make
-   *   it unique, e.g. "{$requested_id}_1", "{$requested_id}_2", etc.
+   * @return string
+   *   A unique ID. This will be equal to $requested_id if no handler instance
+   *   with that ID already exists. Otherwise, it will be appended with an
+   *   integer to make it unique, e.g., "{$requested_id}_1",
+   *   "{$requested_id}_2", etc.
    */
   public static function generate_item_id($requested_id, $existing_items) {
     $count = 0;
@@ -156,20 +157,24 @@ public static function generate_item_id($requested_id, $existing_items) {
   }
 
   /**
-   * Create a new display and a display handler for it.
-   * @param $type
-   *   The plugin type from the views plugin data. Defaults to 'page'.
-   * @param $title
-   *   The title of the display; optional, may be filled in from default.
-   * @param $id
-   *   The id to use.
-   * @return views_plugin_display
+   * Creates a new display and a display handler for it.
+   *
+   * @param string $plugin_id
+   *   (optional) The plugin type from the Views plugin annotation. Defaults to
+   *   'page'.
+   * @param string $title
+   *   (optional) The title of the display. Defaults to NULL.
+   * @param string $id
+   *   (optional) The ID to use, e.g., 'default', 'page_1', 'block_2'. Defaults
+   *   to NULL.
+   *
+   * @return Drupal\views\Plugin\views\display\DisplayPluginBase
    *   A reference to the new handler object.
    */
-  function &new_display($type = 'page', $title = NULL, $id = NULL) {
-    $id = $this->add_display($type, $title, $id);
+  function &new_display($plugin_id = 'page', $title = NULL, $id = NULL) {
+    $id = $this->add_display($plugin_id, $title, $id);
 
-    // Create a handler
+    // Create a handler.
     $this->display[$id]->handler = views_get_plugin('display', $this->display[$id]->display_plugin);
     if (empty($this->display[$id]->handler)) {
       // provide a 'default' handler as an emergency. This won't work well but
@@ -190,9 +195,26 @@ function &new_display($type = 'page', $title = NULL, $id = NULL) {
   }
 
   /**
-   * Add an item with a handler to the view.
+   * Adds an instance of a handler to the view.
+   *
+   * Items may be fields, filters, sort criteria, or arguments.
+   *
+   * @param string $display_id
+   *   The machine name of the display.
+   * @param string $type
+   *   The type of handler being added.
+   * @param string $table
+   *   The name of the table this handler is from.
+   * @param string $field
+   *   The name of the field this handler is from.
+   * @param array $options
+   *   (optional) Extra options for this instance. Defaults to an empty array.
+   * @param string $id
+   *   (optional) A unique ID for this handler instance. Defaults to NULL, in
+   *   which case one will be generated.
    *
-   * These items may be fields, filters, sort criteria, or arguments.
+   * @return string
+   *   The unique ID for this handler instance.
    */
   function add_item($display_id, $type, $table, $field, $options = array(), $id = NULL) {
     $types = View::views_object_types();
@@ -204,29 +226,34 @@ function add_item($display_id, $type, $table, $field, $options = array(), $id =
       $id = $this->generate_item_id($field, $fields);
     }
 
-    $new_item = array(
+    // If the desired type is not found, use the original value directly.
+    $handler_type = !empty($types[$type]['type']) ? $types[$type]['type'] : $type;
+
+    // @todo This variable is never used.
+    $handler = views_get_handler($table, $field, $handler_type);
+
+    $fields[$id] = array(
       'id' => $id,
       'table' => $table,
       'field' => $field,
     ) + $options;
 
-    if (!empty($types[$type]['type'])) {
-      $handler_type = $types[$type]['type'];
-    }
-    else {
-      $handler_type = $type;
-    }
-
-    $handler = views_get_handler($table, $field, $handler_type);
-
-    $fields[$id] = $new_item;
     $this->display[$display_id]->handler->set_option($types[$type]['plural'], $fields);
 
     return $id;
   }
 
   /**
-   * Get an array of items for the current display.
+   * Gets an array of handler instances for the current display.
+   *
+   * @param string $type
+   *   The type of handlers to retrieve.
+   * @param string $display_id
+   *   (optional) A specific display machine name to use. If NULL, the current
+   *   display will be used.
+   *
+   * @return array
+   *   An array of handler instances of a given type for this display.
    */
   function get_items($type, $display_id = NULL) {
     $this->set_display($display_id);
@@ -241,8 +268,18 @@ function get_items($type, $display_id = NULL) {
   }
 
   /**
-   * Get the configuration of an item (field/sort/filter/etc) on a given
-   * display.
+   * Gets the configuration of a handler instance on a given display.
+   *
+   * @param string $display_id
+   *   The machine name of the display.
+   * @param string $type
+   *   The type of handler to retrieve.
+   * @param string $id
+   *   The ID of the handler to retrieve.
+   *
+   * @return array|null
+   *   Either the handler instance's configuration, or NULL if the handler is
+   *   not used on the display.
    */
   function get_item($display_id, $type, $id) {
     // Get info about the types so we can get the right data.
@@ -257,18 +294,26 @@ function get_item($display_id, $type, $id) {
   }
 
   /**
-   * Set the configuration of an item (field/sort/filter/etc) on a given
-   * display.
+   * Sets the configuration of a handler instance on a given display.
+   *
+   * @param string $display_id
+   *   The machine name of the display.
+   * @param string $type
+   *   The type of handler being set.
+   * @param string $id
+   *   The ID of the handler being set.
+   * @param array|null $item
+   *   An array of configuration for a handler, or NULL to remove this instance.
    *
-   * Pass in NULL for the $item to remove an item.
+   * @see set_item_option()
    */
   function set_item($display_id, $type, $id, $item) {
     // Get info about the types so we can get the right data.
     $types = View::views_object_types();
-    // Initialize the display
+    // Initialize the display.
     $this->set_display($display_id);
 
-    // Get the existing configuration
+    // Get the existing configuration.
     $fields = $this->display[$display_id]->handler->get_option($types[$type]['plural']);
     if (isset($item)) {
       $fields[$id] = $item;
@@ -282,11 +327,24 @@ function set_item($display_id, $type, $id, $item) {
   }
 
   /**
-   * Set an option on an item.
+   * Sets an option on a handler instance.
+   *
+   * Use this only if you have just 1 or 2 options to set; if you have many,
+   * consider getting the handler instance, adding the options and using
+   * set_item() directly.
+   *
+   * @param string $display_id
+   *   The machine name of the display.
+   * @param string $type
+   *   The type of handler being set.
+   * @param string $id
+   *   The ID of the handler being set.
+   * @param string $option
+   *   The configuration key for the value being set.
+   * @param mixed $value
+   *   The value being set.
    *
-   * Use this only if you have just 1 or 2 options to set; if you have
-   * many, consider getting the item, adding the options and doing
-   * set_item yourself.
+   * @see set_item()
    */
   function set_item_option($display_id, $type, $id, $option, $value) {
     $item = $this->get_item($display_id, $type, $id);
diff --git a/lib/Drupal/views/ViewStorageController.php b/lib/Drupal/views/ViewStorageController.php
index df2e4345b0d8dc61c6a1f9ac9dbf2ae8249205c0..82ebb2e879cf40ae4c359bd1c84b07f6569ff219 100644
--- a/lib/Drupal/views/ViewStorageController.php
+++ b/lib/Drupal/views/ViewStorageController.php
@@ -18,11 +18,11 @@ class ViewStorageController extends ConfigStorageController {
   /**
    * Overrides Drupal\config\ConfigStorageController::attachLoad();
    */
-  protected function attachLoad(&$queried_entities, $revision_id = FALSE) {
-    foreach ($queried_entities as $id => $entity) {
+  protected function attachLoad(&$queried_objects, $revision_id = FALSE) {
+    foreach ($queried_objects as $id => $configurable) {
       // @todo This property is left in for CTools export UI.
-      $entity->type = t('Normal');
-      $this->attachDisplays($entity);
+      $configurable->type = t('Normal');
+      $this->attachDisplays($configurable);
     }
   }
 
@@ -30,31 +30,31 @@ protected function attachLoad(&$queried_entities, $revision_id = FALSE) {
    * Overrides Drupal\config\ConfigStorageController::save().
    *
    * This currently replaces the reflection code with a static array of
-   * properties to be set on the config object. This can be removed
-   * when the view storage is isolated so the ReflectionClass can work.
+   * properties to be set on the config object. This can be removed when the
+   * view storage is isolated so the ReflectionClass can work.
    */
-  public function save(StorableInterface $entity) {
+  public function save(StorableInterface $configurable) {
     $prefix = $this->entityInfo['config prefix'] . '.';
 
-    // Load the stored entity, if any.
-    if ($entity->getOriginalID()) {
-      $id = $entity->getOriginalID();
+    // Load the stored configurable, if any, and rename it.
+    if ($configurable->getOriginalID()) {
+      $id = $configurable->getOriginalID();
     }
     else {
-      $id = $entity->id();
+      $id = $configurable->id();
     }
     $config = config($prefix . $id);
-    $config->setName($prefix . $entity->id());
+    $config->setName($prefix . $configurable->id());
 
-    if (!$config->isNew() && !isset($entity->original)) {
-      $entity->original = entity_load_unchanged($this->entityType, $id);
+    if (!$config->isNew() && !isset($configurable->original)) {
+      $configurable->original = entity_load_unchanged($this->entityType, $id);
     }
 
-    $this->preSave($entity);
-    $this->invokeHook('presave', $entity);
+    $this->preSave($configurable);
+    $this->invokeHook('presave', $configurable);
 
-    // @todo: This temp measure will be removed once we have a better way or
-    // separation of storage and the executed view.
+    // @todo This temp measure will be removed once we have a better way or
+    //   separation of storage and the executed view.
     $config_properties = array (
       'disabled',
       'api_version',
@@ -70,7 +70,7 @@ public function save(StorableInterface $entity) {
     foreach ($config_properties as $property) {
       if ($property == 'display') {
         $displays = array();
-        foreach ($entity->display as $key => $display) {
+        foreach ($configurable->display as $key => $display) {
           $displays[$key] = array(
             'display_options' => $display->display_options,
             'display_plugin' => $display->display_plugin,
@@ -82,28 +82,28 @@ public function save(StorableInterface $entity) {
         $config->set('display', $displays);
       }
       else {
-        $config->set($property, $entity->$property);
+        $config->set($property, $configurable->$property);
       }
     }
 
     if (!$config->isNew()) {
       $return = SAVED_NEW;
       $config->save();
-      $this->postSave($entity, TRUE);
-      $this->invokeHook('update', $entity);
+      $this->postSave($configurable, TRUE);
+      $this->invokeHook('update', $configurable);
     }
     else {
       $return = SAVED_UPDATED;
       $config->save();
-      $entity->enforceIsNew(FALSE);
-      $this->postSave($entity, FALSE);
-      $this->invokeHook('insert', $entity);
+      $configurable->enforceIsNew(FALSE);
+      $this->postSave($configurable, FALSE);
+      $this->invokeHook('insert', $configurable);
     }
 
     // Clear caches.
     views_invalidate_cache();
 
-    unset($entity->original);
+    unset($configurable->original);
 
     return $return;
   }
@@ -124,22 +124,22 @@ public function create(array $values) {
       )
     );
 
-    $entity = parent::create($values);
+    $configurable = parent::create($values);
 
-    $this->attachDisplays($entity);
-    return $entity;
+    $this->attachDisplays($configurable);
+    return $configurable;
   }
 
   /**
    * Attaches an array of ViewDisplay objects to the view display property.
    *
-   * @param Drupal\entity\StorableInterface $entity
+   * @param Drupal\entity\StorableInterface $configurable
    */
-  protected function attachDisplays(StorableInterface $entity) {
-    if (isset($entity->display) && is_array($entity->display)) {
+  protected function attachDisplays(StorableInterface $configurable) {
+    if (isset($configurable->display) && is_array($configurable->display)) {
       $displays = array();
 
-      foreach ($entity->get('display') as $key => $options) {
+      foreach ($configurable->get('display') as $key => $options) {
         $options += array(
           'display_options' => array(),
           'display_plugin' => NULL,
@@ -151,7 +151,7 @@ protected function attachDisplays(StorableInterface $entity) {
         $displays[$key] = new ViewDisplay($options);
       }
 
-      $entity->set('display', $displays);
+      $configurable->set('display', $displays);
     }
   }
 
diff --git a/views.module b/views.module
index 5bffc54435d351b9210174048dc0a763030aceb9..acb2d469938d08a0895c1f6d7710dec67fb3ddc7 100644
--- a/views.module
+++ b/views.module
@@ -1178,7 +1178,7 @@ function views_module_include($api, $reset = FALSE) {
     }
   }
 
-  // @todo replace with http://drupal.org/node/1741154.
+  // @todo Replace with http://drupal.org/node/1760284.
   ctools_include('plugins');
   return ctools_plugin_api_include('views', $api, views_api_minimum_version(), views_api_version());
 }
@@ -1194,7 +1194,7 @@ function views_get_module_apis($api = 'views', $reset = FALSE) {
     }
   }
 
-  // @todo replace with http://drupal.org/node/1741154.
+  // @todo Replace with http://drupal.org/node/1760284.
   ctools_include('plugins');
   return ctools_plugin_api_info('views', $api, views_api_minimum_version(), views_api_version());
 }
@@ -1507,9 +1507,7 @@ function views_get_all_templates() {
  *   it can be successfully saved.
  */
 function views_new_view() {
-  $view = entity_create('view', array());
-
-  return $view;
+  return entity_create('view', array());
 }
 
 /**
@@ -1569,9 +1567,7 @@ function views_get_applicable_views($type) {
  *   If TRUE, reset the static cache forcing views to be reloaded.
  */
 function views_get_all_views($reset = FALSE) {
-  // @todo replace with http://drupal.org/node/1741154.
-  $controller = entity_get_controller('view');
-  return $controller->load();
+  return entity_get_controller('view')->load();
 }
 
 /**
@@ -1584,8 +1580,7 @@ function views_get_all_views($reset = FALSE) {
  *   The view which is loaded.
  */
 function views_storage_load($id) {
-  $controller = entity_get_controller('view');
-  $result = $controller->load(array($id));
+  $result = entity_get_controller('view')->load(array($id));
   return reset($result);
 }
 
@@ -1600,8 +1595,7 @@ function views_storage_load($id) {
  *   performed.
  */
 function views_storage_save(View $view) {
-  $controller = entity_get_controller('view');
-  return $controller->save($view);
+  return entity_get_controller('view')->save($view);
 }
 
 /**