diff --git a/drush/views.drush.inc b/drush/views.drush.inc
index 4384339..42aff0f 100644
--- a/drush/views.drush.inc
+++ b/drush/views.drush.inc
@@ -124,7 +124,7 @@ function views_revert_views() {
       continue;
     }
     if ($view->type == dt('Overridden')) {
-      $overridden[$view->name] = $view->name;
+      $overridden[$view->storage->name] = $view->storage->name;
     }
   }
 
@@ -220,14 +220,14 @@ function views_revert_view($view) {
     // Revert the view.
     $view->delete();
     // Clear its cache.
-    views_temp_store()->delete($view->name);
+    views_temp_store()->delete($view->storage->name);
     // Give feedback.
-    $message = dt("Reverted the view '@viewname'", array('@viewname' => $view->name));
+    $message = dt("Reverted the view '@viewname'", array('@viewname' => $view->storage->name));
     drush_log($message, 'success');
     // Reverted one more view.
   }
   else {
-    drush_set_error(dt("The view '@viewname' is not overridden.", array('@viewname' => $view->name)));
+    drush_set_error(dt("The view '@viewname' is not overridden.", array('@viewname' => $view->storage->name)));
   }
 }
 
@@ -319,7 +319,7 @@ function drush_views_list() {
   foreach ($views as $id => $view) {
     // if options were specified, check that first
     // mismatch push the loop to the next view
-    if ($with_tags && !in_array($view->tag, $tags)) {
+    if ($with_tags && !in_array($view->storage->tag, $tags)) {
       continue;
     }
     if ($with_status && !$view->disabled == $status) {
@@ -328,21 +328,21 @@ function drush_views_list() {
     if ($with_type && strtolower($view->type) !== $type[0]) {
       continue;
     }
-    if ($with_name && !stristr($view->name, $name[0])) {
+    if ($with_name && !stristr($view->storage->name, $name[0])) {
       continue;
     }
 
     $row = array();
     // each row entry should be in the same order as the header
-    $row[] = $view->name;
-    $row[] = $view->description;
+    $row[] = $view->storage->name;
+    $row[] = $view->storage->description;
     $row[] = $view->type;
-    $row[] = $view->disabled ? dt('Disabled') : dt('Enabled');
-    $row[] = $view->tag;
+    $row[] = $view->storage->disabled ? dt('Disabled') : dt('Enabled');
+    $row[] = $view->storage->tag;
 
     // place the row in the appropiate array,
     // so we can have disabled views at the bottom
-    if ($view->disabled) {
+    if ($view->storage->disabled) {
       $disabled_views[] = $row;
       }
     else{
diff --git a/includes/admin.inc b/includes/admin.inc
index 0bab69f..48a5d6d 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -131,7 +131,7 @@ function views_ui_preview($view, $display_id, $args = array()) {
     }
 
     // Make view links come back to preview.
-    $view->override_path = 'admin/structure/views/nojs/preview/' . $view->name . '/' . $display_id;
+    $view->override_path = 'admin/structure/views/nojs/preview/' . $view->storage->name . '/' . $display_id;
 
     // Also override the current path so we get the pager.
     $original_path = current_path();
@@ -712,7 +712,7 @@ function views_ui_add_form_store_edit_submit($form, &$form_state) {
     $destination = drupal_get_destination();
     $query->remove('destination');
   }
-  $form_state['redirect'] = array('admin/structure/views/view/' . $view->name, array('query' => $destination));
+  $form_state['redirect'] = array('admin/structure/views/view/' . $view->storage->name, array('query' => $destination));
 }
 
 /**
@@ -798,19 +798,19 @@ function views_ui_break_lock_confirm($form, &$form_state, $view) {
   $form = array();
 
   if (empty($view->locked)) {
-    $form['message']['#markup'] = t('There is no lock on view %name to break.', array('%name' => $view->name));
+    $form['message']['#markup'] = t('There is no lock on view %name to break.', array('%name' => $view->storage->name));
     return $form;
   }
 
   $cancel = drupal_container()->get('request')->query->get('cancel');
   if (empty($cancel)) {
-    $cancel = 'admin/structure/views/view/' . $view->name . '/edit';
+    $cancel = 'admin/structure/views/view/' . $view->storage->name . '/edit';
   }
 
   $account = user_load($view->locked->ownerId);
   return confirm_form($form,
                   t('Are you sure you want to break the lock on view %name?',
-                  array('%name' => $view->name)),
+                  array('%name' => $view->storage->name)),
                   $cancel,
                   t('By breaking this lock, any unsaved changes made by !user will be lost!', array('!user' => theme('username', array('account' => $account)))),
                   t('Break lock'),
@@ -973,7 +973,7 @@ function views_ui_edit_form($form, &$form_state, $view, $display_id = NULL) {
     $form['locked'] = array(
       '#theme_wrappers' => array('container'),
       '#attributes' => array('class' => array('view-locked', 'messages', 'warning')),
-      '#markup' => t('This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to <a href="!break">break this lock</a>.', array('!user' => theme('username', array('account' => user_load($view->locked->ownerId))), '!age' => format_interval(REQUEST_TIME - $view->locked->updated), '!break' => url('admin/structure/views/view/' . $view->name . '/break-lock'))),
+      '#markup' => t('This view is being edited by user !user, and is therefore locked from editing by others. This lock is !age old. Click here to <a href="!break">break this lock</a>.', array('!user' => theme('username', array('account' => user_load($view->locked->ownerId))), '!age' => format_interval(REQUEST_TIME - $view->locked->updated), '!break' => url('admin/structure/views/view/' . $view->storage->name . '/break-lock'))),
     );
   }
   if (isset($view->vid) && $view->vid == 'new') {
@@ -1129,7 +1129,7 @@ function views_ui_preview_form($form, &$form_state, $view, $display_id = 'defaul
     '#id' => 'preview-submit',
     '#submit' => array('views_ui_edit_form_submit_preview'),
     '#ajax' => array(
-      'path' => 'admin/structure/views/view/' . $view->name . '/preview/' . $display_id . '/ajax',
+      'path' => 'admin/structure/views/view/' . $view->storage->name . '/preview/' . $display_id . '/ajax',
       'wrapper' => 'views-preview-wrapper',
       'event' => 'click',
       'progress' => array('type' => 'throbber'),
@@ -1141,7 +1141,7 @@ function views_ui_preview_form($form, &$form_state, $view, $display_id = 'defaul
     //   we may need to split Preview into a separate form.
     '#process' => array_merge(array('views_ui_default_button'), element_info_property('submit', '#process', array())),
   );
-  $form['#action'] = url('admin/structure/views/view/' . $view->name .'/preview/' . $display_id);
+  $form['#action'] = url('admin/structure/views/view/' . $view->storage->name .'/preview/' . $display_id);
 
   return $form;
 }
@@ -1166,21 +1166,21 @@ function views_ui_render_display_top($view, $display_id) {
     '#links' => array(
       'edit-details' => array(
         'title' => t('edit view name/description'),
-        'href' => "admin/structure/views/nojs/edit-details/$view->name",
+        'href' => "admin/structure/views/nojs/edit-details/{$view->storage->name}",
         'attributes' => array('class' => array('views-ajax-link')),
       ),
       'analyze' => array(
         'title' => t('analyze view'),
-        'href' => "admin/structure/views/nojs/analyze/$view->name/$display_id",
+        'href' => "admin/structure/views/nojs/analyze/{$view->storage->name}/$display_id",
         'attributes' => array('class' => array('views-ajax-link')),
       ),
       'clone' => array(
         'title' => t('clone view'),
-        'href' => "admin/structure/views/view/$view->name/clone",
+        'href' => "admin/structure/views/view/{$view->storage->name}/clone",
       ),
       'reorder' => array(
         'title' => t('reorder displays'),
-        'href' => "admin/structure/views/nojs/reorder-displays/$view->name/$display_id",
+        'href' => "admin/structure/views/nojs/reorder-displays/{$view->storage->name}/$display_id",
         'attributes' => array('class' => array('views-ajax-link')),
       ),
     ),
@@ -1193,14 +1193,14 @@ function views_ui_render_display_top($view, $display_id) {
     if ($view->type == t('Overridden')) {
       $element['extra_actions']['#links']['revert'] = array(
         'title' => t('revert view'),
-        'href' => "admin/structure/views/view/$view->name/revert",
-        'query' => array('destination' => "admin/structure/views/view/$view->name"),
+        'href' => "admin/structure/views/view/{$view->storage->name}/revert",
+        'query' => array('destination' => "admin/structure/views/view/{$view->storage->name}"),
       );
     }
     else {
       $element['extra_actions']['#links']['delete'] = array(
         'title' => t('delete view'),
-        'href' => "admin/structure/views/view/$view->name/delete",
+        'href' => "admin/structure/views/view/{$view->storage->name}/delete",
       );
     }
   }
@@ -1216,7 +1216,7 @@ function views_ui_render_display_top($view, $display_id) {
   }
 
   // Buttons for adding a new display.
-  foreach (views_fetch_plugin_names('display', NULL, array($view->base_table)) as $type => $label) {
+  foreach (views_fetch_plugin_names('display', NULL, array($view->storage->base_table)) as $type => $label) {
     $element['add_display'][$type] = array(
       '#type' => 'submit',
       '#value' => t('Add !display', array('!display' => $label)),
@@ -1250,7 +1250,7 @@ function views_ui_edit_form_submit_add_display($form, &$form_state) {
   views_ui_cache_set($view);
 
   // Redirect to the new display's edit page.
-  $form_state['redirect'] = 'admin/structure/views/view/' . $view->name . '/edit/' . $display_id;
+  $form_state['redirect'] = 'admin/structure/views/view/' . $view->storage->name . '/edit/' . $display_id;
 }
 
 /**
@@ -1272,7 +1272,7 @@ function views_ui_edit_form_submit_duplicate_display($form, &$form_state) {
   views_ui_cache_set($view);
 
   // Redirect to the new display's edit page.
-  $form_state['redirect'] = 'admin/structure/views/view/' . $view->name . '/edit/' . $new_display_id;
+  $form_state['redirect'] = 'admin/structure/views/view/' . $view->storage->name . '/edit/' . $new_display_id;
 }
 
 /**
@@ -1288,7 +1288,7 @@ function views_ui_edit_form_submit_delete_display($form, &$form_state) {
 
   // Redirect to the top-level edit page. The first remaining display will
   // become the active display.
-  $form_state['redirect'] = 'admin/structure/views/view/' . $view->name;
+  $form_state['redirect'] = 'admin/structure/views/view/' . $view->storage->name;
 }
 
 /**
@@ -1392,12 +1392,13 @@ function views_ui_edit_page_display_tabs($view, $display_id = NULL) {
   $tabs = array();
 
   // Create a tab for each display.
-  foreach ($view->display as $id => $display) {
+  $view->initDisplay();
+  foreach ($view->storage->display as $id => $display) {
     $tabs[$id] = array(
       '#theme' => 'menu_local_task',
       '#link' => array(
         'title' => views_ui_get_display_label($view, $id),
-        'href' => 'admin/structure/views/view/' . $view->name . '/edit/' . $id,
+        'href' => 'admin/structure/views/view/' . $view->storage->name . '/edit/' . $id,
         'localized_options' => array(),
       ),
     );
@@ -1416,7 +1417,7 @@ function views_ui_edit_page_display_tabs($view, $display_id = NULL) {
 
   // Mark the display tab as red to show validation errors.
   $view->validate();
-  foreach ($view->display as $id => $display) {
+  foreach ($view->displayHandlers as $id => $display) {
     if (!empty($view->display_errors[$id])) {
       // Always show the tab.
       $tabs[$id]['#access'] = TRUE;
@@ -1437,7 +1438,7 @@ function views_ui_show_default_display($view) {
   $advanced_mode = config('views.settings')->get('ui.show.master_display');
   // For other users, show the default display only if there are no others, and
   // hide it if there's at least one "real" display.
-  $additional_displays = (count($view->display) == 1);
+  $additional_displays = (count($view->displayHandlers) == 1);
 
   return $advanced_mode || $additional_displays;
 }
@@ -1447,7 +1448,7 @@ function views_ui_show_default_display($view) {
  */
 function views_ui_get_display_tab($view, $display_id) {
   $build = array();
-  $display = $view->display[$display_id];
+  $display = $view->displayHandlers[$display_id];
   // If the plugin doesn't exist, display an error message instead of an edit
   // page.
   if (empty($display)) {
@@ -1457,7 +1458,7 @@ function views_ui_get_display_tab($view, $display_id) {
   }
   // Build the content of the edit page.
   else {
-    $build['details'] = views_ui_get_display_tab_details($view, $display);
+    $build['details'] = views_ui_get_display_tab_details($view, $display->display);
   }
   // In AJAX context, views_ui_regenerate_tab() returns this outside of form
   // context, so hook_form_views_ui_edit_form_alter() is insufficient.
@@ -1931,10 +1932,10 @@ function views_ui_import_validate($form, &$form_state) {
   }
 
   if ($form_state['values']['name']) {
-    $view->name = $form_state['values']['name'];
+    $view->storage->name = $form_state['values']['name'];
   }
 
-  $test = views_get_view($view->name);
+  $test = views_get_view($view->storage->name);
   if (!$form_state['values']['name_override']) {
     if ($test && $test->type != t('Default')) {
       form_set_error('', t('A view by that name already exists; please choose a different name'));
@@ -2115,7 +2116,7 @@ function views_ui_edit_form_get_bucket($type, $view, $display) {
   // to get the right one.
   switch ($type) {
     case 'filter':
-      $rearrange_url = "admin/structure/views/nojs/rearrange-$type/$view->name/{$display['id']}/$type";
+      $rearrange_url = "admin/structure/views/nojs/rearrange-$type/{$view->storage->name}/{$display['id']}/$type";
       $rearrange_text = t('And/Or, Rearrange');
       // TODO: Add another class to have another symbol for filter rearrange.
       $class = 'icon compact rearrange';
@@ -2135,7 +2136,7 @@ function views_ui_edit_form_get_bucket($type, $view, $display) {
       }
 
     default:
-      $rearrange_url = "admin/structure/views/nojs/rearrange/$view->name/{$display['id']}/$type";
+      $rearrange_url = "admin/structure/views/nojs/rearrange/{$view->storage->name}/{$display['id']}/$type";
       $rearrange_text = t('Rearrange');
       $class = 'icon compact rearrange';
   }
@@ -2145,7 +2146,7 @@ function views_ui_edit_form_get_bucket($type, $view, $display) {
   $count_handlers = count($view->displayHandlers[$display['id']]->getHandlers($type));
   $actions['add'] = array(
     'title' => t('Add'),
-    'href' => "admin/structure/views/nojs/add-item/$view->name/{$display['id']}/$type",
+    'href' => "admin/structure/views/nojs/add-item/{$view->storage->name}/{$display['id']}/$type",
     'attributes' => array('class' => array('icon compact add', 'views-ajax-link'), 'title' => t('Add'), 'id' => 'views-add-' . $type),
     'html' => TRUE,
   );
@@ -2180,7 +2181,7 @@ function views_ui_edit_form_get_bucket($type, $view, $display) {
 
   // If there's an options form for the bucket, link to it.
   if (!empty($types[$type]['options'])) {
-    $build['#title'] = l($build['#title'], "admin/structure/views/nojs/config-type/$view->name/{$display['id']}/$type", array('attributes' => array('class' => array('views-ajax-link'), 'id' => 'views-title-' . $type)));
+    $build['#title'] = l($build['#title'], "admin/structure/views/nojs/config-type/{$view->storage->name}/{$display['id']}/$type", array('attributes' => array('class' => array('views-ajax-link'), 'id' => 'views-title-' . $type)));
   }
 
   static $relationships = NULL;
@@ -2217,7 +2218,7 @@ function views_ui_edit_form_get_bucket($type, $view, $display) {
     if (empty($handler)) {
       $build['fields'][$id]['#class'][] = 'broken';
       $field_name = t('Broken/missing handler: @table > @field', array('@table' => $field['table'], '@field' => $field['field']));
-      $build['fields'][$id]['#link'] = l($field_name, "admin/structure/views/nojs/config-item/$view->name/{$display['id']}/$type/$id", array('attributes' => array('class' => array('views-ajax-link')), 'html' => TRUE));
+      $build['fields'][$id]['#link'] = l($field_name, "admin/structure/views/nojs/config-item/{$view->storage->name}/{$display['id']}/$type/$id", array('attributes' => array('class' => array('views-ajax-link')), 'html' => TRUE));
       continue;
     }
 
@@ -2232,15 +2233,15 @@ function views_ui_edit_form_get_bucket($type, $view, $display) {
     if (!empty($field['exclude'])) {
       $link_attributes['class'][] = 'views-field-excluded';
     }
-    $build['fields'][$id]['#link'] = l($link_text, "admin/structure/views/nojs/config-item/$view->name/{$display['id']}/$type/$id", array('attributes' => $link_attributes, 'html' => TRUE));
+    $build['fields'][$id]['#link'] = l($link_text, "admin/structure/views/nojs/config-item/{$view->storage->name}/{$display['id']}/$type/$id", array('attributes' => $link_attributes, 'html' => TRUE));
     $build['fields'][$id]['#class'][] = drupal_clean_css_identifier($display['id']. '-' . $type . '-' . $id);
 
     if ($view->displayHandlers[$display['id']]->useGroupBy() && $handler->usesGroupBy()) {
-      $build['fields'][$id]['#settings_links'][] = l('<span class="label">' . t('Aggregation settings') . '</span>', "admin/structure/views/nojs/config-item-group/$view->name/{$display['id']}/$type/$id", array('attributes' => array('class' => 'views-button-configure views-ajax-link', 'title' => t('Aggregation settings')), 'html' => TRUE));
+      $build['fields'][$id]['#settings_links'][] = l('<span class="label">' . t('Aggregation settings') . '</span>', "admin/structure/views/nojs/config-item-group/{$view->storage->name}/{$display['id']}/$type/$id", array('attributes' => array('class' => 'views-button-configure views-ajax-link', 'title' => t('Aggregation settings')), 'html' => TRUE));
     }
 
     if ($handler->hasExtraOptions()) {
-      $build['fields'][$id]['#settings_links'][] = l('<span class="label">' . t('Settings') . '</span>', "admin/structure/views/nojs/config-item-extra/$view->name/{$display['id']}/$type/$id", array('attributes' => array('class' => array('views-button-configure', 'views-ajax-link'), 'title' => t('Settings')), 'html' => TRUE));
+      $build['fields'][$id]['#settings_links'][] = l('<span class="label">' . t('Settings') . '</span>', "admin/structure/views/nojs/config-item-extra/{$view->storage->name}/{$display['id']}/$type/$id", array('attributes' => array('class' => array('views-button-configure', 'views-ajax-link'), 'title' => t('Settings')), 'html' => TRUE));
     }
 
     if ($grouping) {
@@ -2678,7 +2679,7 @@ function views_ui_build_identifier($key, $view, $display_id, $args) {
   $form = views_ui_ajax_forms($key);
   // Automatically remove the single-form cache if it exists and
   // does not match the key.
-  $identifier = implode('-', array($key, $view->name, $display_id));
+  $identifier = implode('-', array($key, $view->storage->name, $display_id));
 
   foreach ($form['args'] as $id) {
     $arg = (!empty($args)) ? array_shift($args) : NULL;
@@ -2834,7 +2835,7 @@ function views_ui_ajax_form($js, $key, $view, $display_id = '') {
     }
     elseif (!$js) {
       // if nothing on the stack, non-js forms just go back to the main view editor.
-      return drupal_goto("admin/structure/views/view/$view->name/edit");
+      return drupal_goto("admin/structure/views/view/{$view->storage->name}/edit");
     }
     else {
       $output = array();
@@ -2954,7 +2955,7 @@ function views_ui_reorder_displays_form($form, &$form_state) {
     'limit' => 0,
   );
 
-  $form['#action'] = url('admin/structure/views/nojs/reorder-displays/' . $view->name . '/' . $display_id);
+  $form['#action'] = url('admin/structure/views/nojs/reorder-displays/' . $view->storage->name . '/' . $display_id);
 
   views_ui_standard_form_buttons($form, $form_state, 'views_ui_reorder_displays_form');
 
@@ -3098,14 +3099,14 @@ function views_ui_edit_details_form($form, &$form_state) {
     '#type' => 'textfield',
     '#title' => t('View tag'),
     '#description' => t('Optionally, enter a comma delimited list of tags for this view to use in filtering and sorting views on the administrative page.'),
-    '#default_value' => $view->tag,
+    '#default_value' => $view->storage->tag,
     '#autocomplete_path' => 'admin/views/ajax/autocomplete/tag',
   );
   $form['details']['description'] = array(
     '#type' => 'textfield',
     '#title' => t('View description'),
     '#description' => t('This description will appear on the Views administrative UI to tell you what the view is about.'),
-    '#default_value' => $view->description,
+    '#default_value' => $view->storage->description,
   );
 
   views_ui_standard_form_buttons($form, $form_state, 'views_ui_edit_details_form');
@@ -4939,8 +4940,8 @@ function views_ui_autocomplete_tag($string = '') {
   // get matches from default views:
   $views = views_get_all_views();
   foreach ($views as $view) {
-    if (!empty($view->tag) && strpos($view->tag, $string) === 0) {
-      $matches[$view->tag] = $view->tag;
+    if (!empty($view->storage->tag) && strpos($view->storage->tag, $string) === 0) {
+      $matches[$view->storage->tag] = $view->storage->tag;
       if (count($matches) >= 10) {
         break;
       }
@@ -5202,7 +5203,7 @@ function theme_views_ui_style_plugin_table($variables) {
  * @todo Remove this function once editing the display title is possible.
  */
 function views_ui_get_display_label($view, $display_id, $check_changed = TRUE) {
-  $title = $display_id == 'default' ? t('Master') : $view->display[$display_id]['display_title'];
+  $title = $display_id == 'default' ? t('Master') : $view->displayHandlers[$display_id]->display['display_title'];
   $title = views_ui_truncate($title, 25);
 
   if ($check_changed && !empty($view->changed_display[$display_id])) {
@@ -5296,7 +5297,7 @@ function views_ui_field_list() {
               && $data = $data[$item['field']][$type]) {
               // The final check that we have a fieldapi field now.
               if (isset($data['field_name'])) {
-                $fields[$data['field_name']][$view->name] = $view->name;
+                $fields[$data['field_name']][$view->storage->name] = $view->storage->name;
               }
             }
           }
diff --git a/lib/Drupal/views/Plugin/views/area/Result.php b/lib/Drupal/views/Plugin/views/area/Result.php
index 6bf0732..bea7527 100644
--- a/lib/Drupal/views/Plugin/views/area/Result.php
+++ b/lib/Drupal/views/Plugin/views/area/Result.php
@@ -73,7 +73,7 @@ function render($empty = FALSE) {
     // @TODO: Maybe use a possible is views empty functionality.
     // Not every view has total_rows set, use view->result instead.
     $total = isset($this->view->total_rows) ? $this->view->total_rows : count($this->view->result);
-    $name = check_plain($this->view->human_name);
+    $name = check_plain($this->view->storage->human_name);
     if ($per_page === 0) {
       $page_count = 1;
       $start = 1;
diff --git a/lib/Drupal/views/Plugin/views/area/View.php b/lib/Drupal/views/Plugin/views/area/View.php
index 0c589b8..018996c 100644
--- a/lib/Drupal/views/Plugin/views/area/View.php
+++ b/lib/Drupal/views/Plugin/views/area/View.php
@@ -35,7 +35,7 @@ protected function defineOptions() {
   public function buildOptionsForm(&$form, &$form_state) {
     parent::buildOptionsForm($form, $form_state);
 
-    $view_display = $this->view->name . ':' . $this->view->current_display;
+    $view_display = $this->view->storage->name . ':' . $this->view->current_display;
 
     $options = array('' => t('-Select-'));
     $options += views_get_views_as_options(FALSE, 'all', $view_display, FALSE, TRUE);
diff --git a/lib/Drupal/views/Plugin/views/cache/CachePluginBase.php b/lib/Drupal/views/Plugin/views/cache/CachePluginBase.php
index 0ac749c..1c02c1f 100644
--- a/lib/Drupal/views/Plugin/views/cache/CachePluginBase.php
+++ b/lib/Drupal/views/Plugin/views/cache/CachePluginBase.php
@@ -177,7 +177,7 @@ function cache_get($type) {
    * to be sure that we catch everything. Maybe that's a bad idea.
    */
   function cache_flush() {
-    cache($this->table)->deletePrefix($this->view->name . ':');
+    cache($this->table)->deletePrefix($this->view->storage->name . ':');
   }
 
   /**
@@ -302,7 +302,7 @@ function get_results_key() {
         }
       }
 
-      $this->_results_key = $this->view->name . ':' . $this->displayHandler->display['id'] . ':results:' . md5(serialize($key_data));
+      $this->_results_key = $this->view->storage->name . ':' . $this->displayHandler->display['id'] . ':results:' . md5(serialize($key_data));
     }
 
     return $this->_results_key;
@@ -320,7 +320,7 @@ function get_output_key() {
         'base_url' => $GLOBALS['base_url'],
       );
 
-      $this->_output_key = $this->view->name . ':' . $this->displayHandler->display['id'] . ':output:' . md5(serialize($key_data));
+      $this->_output_key = $this->view->storage->name . ':' . $this->displayHandler->display['id'] . ':output:' . md5(serialize($key_data));
     }
 
     return $this->_output_key;
diff --git a/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php b/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
index 0ca5f5d..ce38046 100644
--- a/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/display/DisplayPluginBase.php
@@ -769,7 +769,7 @@ public function getPlugin($type = 'style', $name = NULL) {
 
           break;
         case 'query':
-          $views_data = views_fetch_data($this->view->base_table);
+          $views_data = views_fetch_data($this->view->storage->base_table);
           $name = !empty($views_data['table']['base']['query class']) ? $views_data['table']['base']['query class'] : 'views_query';
         default:
           $option_name = $type;
@@ -806,10 +806,10 @@ public function getPlugin($type = 'style', $name = NULL) {
         $display_id = $this->isDefaulted($option_name) ? $this->display['id'] : 'default';
 
         if (!isset($this->base_field)) {
-          $views_data = views_fetch_data($this->view->base_table);
-          $this->view->base_field = !empty($views_data['table']['base']['field']) ? $views_data['table']['base']['field'] : '';
+          $views_data = views_fetch_data($this->view->storage->base_table);
+          $this->view->storage->base_field = !empty($views_data['table']['base']['field']) ? $views_data['table']['base']['field'] : '';
         }
-        $plugin->init($this->view->base_table, $this->view->base_field, $options);
+        $plugin->init($this->view->storage->base_table, $this->view->storage->base_field, $options);
       }
       $cache[$type][$name] = $plugin;
     }
@@ -980,7 +980,7 @@ public function optionLink($text, $section, $class = '', $title = '') {
       $title = $text;
     }
 
-    return l($text, 'admin/structure/views/nojs/display/' . $this->view->name . '/' . $this->display['id'] . '/' . $section, array('attributes' => array('class' => 'views-ajax-link ' . $class, 'title' => $title, 'id' => drupal_html_id('views-' . $this->display['id'] . '-' . $section)), 'html' => TRUE));
+    return l($text, 'admin/structure/views/nojs/display/' . $this->view->storage->name . '/' . $this->display['id'] . '/' . $section, array('attributes' => array('class' => 'views-ajax-link ' . $class, 'title' => $title, 'id' => drupal_html_id('views-' . $this->display['id'] . '-' . $section)), 'html' => TRUE));
   }
 
   /**
@@ -2690,8 +2690,8 @@ public function getSpecialBlocks() {
     $blocks = array();
 
     if ($this->usesExposedFormInBlock()) {
-      $delta = '-exp-' . $this->view->name . '-' . $this->display['id'];
-      $desc = t('Exposed form: @view-@display_id', array('@view' => $this->view->name, '@display_id' => $this->display['id']));
+      $delta = '-exp-' . $this->view->storage->name . '-' . $this->display['id'];
+      $desc = t('Exposed form: @view-@display_id', array('@view' => $this->view->storage->name, '@display_id' => $this->display['id']));
 
       $blocks[$delta] = array(
         'info' => $desc,
diff --git a/lib/Drupal/views/Plugin/views/display/Feed.php b/lib/Drupal/views/Plugin/views/display/Feed.php
index 0050f94..35e5951 100644
--- a/lib/Drupal/views/Plugin/views/display/Feed.php
+++ b/lib/Drupal/views/Plugin/views/display/Feed.php
@@ -49,7 +49,7 @@ public function init(&$view, &$display, $options = NULL) {
     // Set the default row style. Ideally this would be part of the option
     // definition, but in this case it's dependent on the view's base table,
     // which we don't know until init().
-    $row_plugins = views_fetch_plugin_names('row', $this->getStyleType(), array($view->base_table));
+    $row_plugins = views_fetch_plugin_names('row', $this->getStyleType(), array($view->storage->base_table));
     $default_row_plugin = key($row_plugins);
     if ($this->options['row_plugin'] == '') {
       $this->options['row_plugin'] = $default_row_plugin;
diff --git a/lib/Drupal/views/Plugin/views/display/Page.php b/lib/Drupal/views/Plugin/views/display/Page.php
index e959f60..d348872 100644
--- a/lib/Drupal/views/Plugin/views/display/Page.php
+++ b/lib/Drupal/views/Plugin/views/display/Page.php
@@ -80,7 +80,7 @@ public function executeHookMenu($callbacks) {
     // views_arg_load -- which lives in views.module
 
     $bits = explode('/', $this->getOption('path'));
-    $page_arguments = array($this->view->name, $this->display['id']);
+    $page_arguments = array($this->view->storage->name, $this->display['id']);
     $this->view->initHandlers();
     $view_arguments = $this->view->argument;
 
@@ -141,7 +141,7 @@ public function executeHookMenu($callbacks) {
         'access callback' => 'views_access',
         'access arguments' => $access_arguments,
         // Identify URL embedded arguments and correlate them to a handler
-        'load arguments'  => array($this->view->name, $this->display['id'], '%index'),
+        'load arguments'  => array($this->view->storage->name, $this->display['id'], '%index'),
       );
       $menu = $this->getOption('menu');
       if (empty($menu)) {
@@ -202,7 +202,7 @@ public function executeHookMenu($callbacks) {
               'access callback' => 'views_access',
               'access arguments' => $access_arguments,
               // Identify URL embedded arguments and correlate them to a handler
-              'load arguments'  => array($this->view->name, $this->display['id'], '%index'),
+              'load arguments'  => array($this->view->storage->name, $this->display['id'], '%index'),
               'title' => $tab_options['title'],
               'description' => $tab_options['description'],
               'menu_name' => $tab_options['name'],
diff --git a/lib/Drupal/views/Plugin/views/exposed_form/ExposedFormPluginBase.php b/lib/Drupal/views/Plugin/views/exposed_form/ExposedFormPluginBase.php
index c630167..1bafe9e 100644
--- a/lib/Drupal/views/Plugin/views/exposed_form/ExposedFormPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/exposed_form/ExposedFormPluginBase.php
@@ -314,8 +314,8 @@ function reset_form(&$form, &$form_state) {
     // remember settings.
     $display_id = ($this->view->display_handler->isDefaulted('filters')) ? 'default' : $this->view->current_display;
 
-    if (isset($_SESSION['views'][$this->view->name][$display_id])) {
-      unset($_SESSION['views'][$this->view->name][$display_id]);
+    if (isset($_SESSION['views'][$this->view->storage->name][$display_id])) {
+      unset($_SESSION['views'][$this->view->storage->name][$display_id]);
     }
 
     // Set the form to allow redirect.
diff --git a/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php b/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php
index 5bc6f95..98c8c2a 100644
--- a/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/field/FieldPluginBase.php
@@ -1608,19 +1608,19 @@ public function themeFunctions() {
     $display = $this->view->display[$this->view->current_display];
 
     if (!empty($display)) {
-      $themes[] = $hook . '__' . $this->view->name  . '__' . $display['id'] . '__' . $this->options['id'];
-      $themes[] = $hook . '__' . $this->view->name  . '__' . $display['id'];
+      $themes[] = $hook . '__' . $this->view->storage->name  . '__' . $display['id'] . '__' . $this->options['id'];
+      $themes[] = $hook . '__' . $this->view->storage->name  . '__' . $display['id'];
       $themes[] = $hook . '__' . $display['id'] . '__' . $this->options['id'];
       $themes[] = $hook . '__' . $display['id'];
       if ($display['id'] != $display['display_plugin']) {
-        $themes[] = $hook . '__' . $this->view->name  . '__' . $display['display_plugin'] . '__' . $this->options['id'];
-        $themes[] = $hook . '__' . $this->view->name  . '__' . $display['display_plugin'];
+        $themes[] = $hook . '__' . $this->view->storage->name  . '__' . $display['display_plugin'] . '__' . $this->options['id'];
+        $themes[] = $hook . '__' . $this->view->storage->name  . '__' . $display['display_plugin'];
         $themes[] = $hook . '__' . $display['display_plugin'] . '__' . $this->options['id'];
         $themes[] = $hook . '__' . $display['display_plugin'];
       }
     }
-    $themes[] = $hook . '__' . $this->view->name . '__' . $this->options['id'];
-    $themes[] = $hook . '__' . $this->view->name;
+    $themes[] = $hook . '__' . $this->view->storage->name . '__' . $this->options['id'];
+    $themes[] = $hook . '__' . $this->view->storage->name;
     $themes[] = $hook . '__' . $this->options['id'];
     $themes[] = $hook;
 
diff --git a/lib/Drupal/views/Plugin/views/filter/FilterPluginBase.php b/lib/Drupal/views/Plugin/views/filter/FilterPluginBase.php
index 37a9768..aba949a 100644
--- a/lib/Drupal/views/Plugin/views/filter/FilterPluginBase.php
+++ b/lib/Drupal/views/Plugin/views/filter/FilterPluginBase.php
@@ -1240,8 +1240,8 @@ function store_group_input($input, $status) {
 
     // false means that we got a setting that means to recuse ourselves,
     // so we should erase whatever happened to be there.
-    if ($status === FALSE && isset($_SESSION['views'][$this->view->name][$display_id])) {
-      $session = &$_SESSION['views'][$this->view->name][$display_id];
+    if ($status === FALSE && isset($_SESSION['views'][$this->view->storage->name][$display_id])) {
+      $session = &$_SESSION['views'][$this->view->storage->name][$display_id];
 
       if (isset($session[$this->options['group_info']['identifier']])) {
         unset($session[$this->options['group_info']['identifier']]);
@@ -1249,11 +1249,11 @@ function store_group_input($input, $status) {
     }
 
     if ($status !== FALSE) {
-      if (!isset($_SESSION['views'][$this->view->name][$display_id])) {
-        $_SESSION['views'][$this->view->name][$display_id] = array();
+      if (!isset($_SESSION['views'][$this->view->storage->name][$display_id])) {
+        $_SESSION['views'][$this->view->storage->name][$display_id] = array();
       }
 
-      $session = &$_SESSION['views'][$this->view->name][$display_id];
+      $session = &$_SESSION['views'][$this->view->storage->name][$display_id];
 
       $session[$this->options['group_info']['identifier']] = $input[$this->options['group_info']['identifier']];
     }
@@ -1334,8 +1334,8 @@ public function storeExposedInput($input, $status) {
 
     // false means that we got a setting that means to recuse ourselves,
     // so we should erase whatever happened to be there.
-    if (!$status && isset($_SESSION['views'][$this->view->name][$display_id])) {
-      $session = &$_SESSION['views'][$this->view->name][$display_id];
+    if (!$status && isset($_SESSION['views'][$this->view->storage->name][$display_id])) {
+      $session = &$_SESSION['views'][$this->view->storage->name][$display_id];
       if ($operator && isset($session[$this->options['expose']['operator_id']])) {
         unset($session[$this->options['expose']['operator_id']]);
       }
@@ -1346,11 +1346,11 @@ public function storeExposedInput($input, $status) {
     }
 
     if ($status) {
-      if (!isset($_SESSION['views'][$this->view->name][$display_id])) {
-        $_SESSION['views'][$this->view->name][$display_id] = array();
+      if (!isset($_SESSION['views'][$this->view->storage->name][$display_id])) {
+        $_SESSION['views'][$this->view->storage->name][$display_id] = array();
       }
 
-      $session = &$_SESSION['views'][$this->view->name][$display_id];
+      $session = &$_SESSION['views'][$this->view->storage->name][$display_id];
 
       if ($operator && isset($input[$this->options['expose']['operator_id']])) {
         $session[$this->options['expose']['operator_id']] = $input[$this->options['expose']['operator_id']];
diff --git a/lib/Drupal/views/Plugin/views/pager/Full.php b/lib/Drupal/views/Plugin/views/pager/Full.php
index 78f6b09..32aae7c 100644
--- a/lib/Drupal/views/Plugin/views/pager/Full.php
+++ b/lib/Drupal/views/Plugin/views/pager/Full.php
@@ -291,7 +291,7 @@ public function query() {
   }
 
   function render($input) {
-    $pager_theme = views_theme_functions('pager', $this->view, $this->view->display[$this->view->current_display]);
+    $pager_theme = views_theme_functions('pager', $this->view, $this->view->displayHandlers[$this->view->current_display]->display);
     // The 0, 1, 3, 4 index are correct. See theme_pager documentation.
     $tags = array(
       0 => $this->options['tags']['first'],
diff --git a/lib/Drupal/views/Plugin/views/query/Sql.php b/lib/Drupal/views/Plugin/views/query/Sql.php
index c106be6..2a73bbe 100644
--- a/lib/Drupal/views/Plugin/views/query/Sql.php
+++ b/lib/Drupal/views/Plugin/views/query/Sql.php
@@ -1285,7 +1285,7 @@ public function query($get_count = FALSE) {
     $query = Database::getConnection($target, $key)
       ->select($this->base_table, $this->base_table, $options)
       ->addTag('views')
-      ->addTag('views_' . $this->view->name);
+      ->addTag('views_' . $this->view->storage->name);
 
     // Add the tags added to the view itself.
     foreach ($this->tags as $tag) {
@@ -1516,7 +1516,7 @@ function execute(&$view) {
           drupal_set_message($e->getMessage(), 'error');
         }
         else {
-          throw new DatabaseExceptionWrapper(format_string('Exception in @human_name[@view_name]: @message', array('@human_name' => $view->human_name, '@view_name' => $view->name, '@message' => $e->getMessage())));
+          throw new DatabaseExceptionWrapper(format_string('Exception in @human_name[@view_name]: @message', array('@human_name' => $view->storage->human_name, '@view_name' => $view->storage->name, '@message' => $e->getMessage())));
         }
       }
 
@@ -1647,7 +1647,7 @@ function load_entities(&$results) {
   }
 
   function add_signature(&$view) {
-    $view->query->add_field(NULL, "'" . $view->name . ':' . $view->current_display . "'", 'view_name');
+    $view->query->add_field(NULL, "'" . $view->storage->name . ':' . $view->current_display . "'", 'view_name');
   }
 
   function get_aggregation_info() {
diff --git a/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php b/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
index 5eb60da..b570523 100644
--- a/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
+++ b/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
@@ -132,10 +132,10 @@ public function buildOptionsForm(&$form, &$form_state) {
         // TODO: check the field is the correct sort?
         // or let users hang themselves at this stage and check later?
         if ($view->type == 'Default') {
-          $views[t('Default Views')][$view->name] = $view->name;
+          $views[t('Default Views')][$view->storage->name] = $view->storage->name;
         }
         else {
-          $views[t('Existing Views')][$view->name] = $view->name;
+          $views[t('Existing Views')][$view->storage->name] = $view->storage->name;
         }
       }
     }
@@ -173,7 +173,7 @@ function get_temporary_view() {
    * When the form is submitted, take sure to clear the subquery string cache.
    */
   public function submitOptionsForm(&$form, &$form_state) {
-    $cid = 'views_relationship_groupwise_max:' . $this->view->name . ':' . $this->view->current_display . ':' . $this->options['id'];
+    $cid = 'views_relationship_groupwise_max:' . $this->view->storage->name . ':' . $this->view->current_display . ':' . $this->options['id'];
     cache('views_data')->delete($cid);
   }
 
@@ -360,7 +360,7 @@ public function query() {
     }
     else {
       // Get the stored subquery SQL string.
-      $cid = 'views_relationship_groupwise_max:' . $this->view->name . ':' . $this->view->current_display . ':' . $this->options['id'];
+      $cid = 'views_relationship_groupwise_max:' . $this->view->storage->name . ':' . $this->view->current_display . ':' . $this->options['id'];
       $cache = cache('views_data')->get($cid);
       if (isset($cache->data)) {
         $def['left_query'] = $cache->data;
diff --git a/lib/Drupal/views/Tests/AnalyzeTest.php b/lib/Drupal/views/Tests/AnalyzeTest.php
index a368d39..f5497f2 100644
--- a/lib/Drupal/views/Tests/AnalyzeTest.php
+++ b/lib/Drupal/views/Tests/AnalyzeTest.php
@@ -41,7 +41,6 @@ function testAnalyzeBasic() {
     $this->drupalLogin($this->admin);
     // Enable the frontpage view and click the analyse button.
     $view = views_get_view('frontpage');
-    $view = $view->createDuplicate();
 
     $this->drupalGet('admin/structure/views/view/frontpage/edit');
     $this->assertLink(t('analyze view'));
diff --git a/lib/Drupal/views/Tests/Plugin/CacheTest.php b/lib/Drupal/views/Tests/Plugin/CacheTest.php
index 2c75f44..328fcb6 100644
--- a/lib/Drupal/views/Tests/Plugin/CacheTest.php
+++ b/lib/Drupal/views/Tests/Plugin/CacheTest.php
@@ -161,7 +161,7 @@ function testHeaderStorage() {
     // Some hook_views_pre_render in views_test_data.module adds the test css/js file.
     // so they should be added to the css/js storage.
     $view = $this->getView();
-    $view->name = 'test_cache_header_storage';
+    $view->storage->name = 'test_cache_header_storage';
     $view->display_handler->overrideOption('cache', array(
       'type' => 'time',
       'output_lifespan' => '3600',
@@ -185,7 +185,7 @@ function testHeaderStorage() {
 
     // Now add some css/jss before running the view.
     // Make sure that this css is not added when running the cached view.
-    $view->name = 'test_cache_header_storage_2';
+    $view->storage->name = 'test_cache_header_storage_2';
 
     $system_css_path = drupal_get_path('module', 'system') . '/system.maintenance.css';
     drupal_add_css($system_css_path);
diff --git a/lib/Drupal/views/Tests/ViewExecutableTest.php b/lib/Drupal/views/Tests/ViewExecutableTest.php
index 02eb4d9..8883553 100644
--- a/lib/Drupal/views/Tests/ViewExecutableTest.php
+++ b/lib/Drupal/views/Tests/ViewExecutableTest.php
@@ -70,7 +70,7 @@ public function testProperties() {
     // Set one storage property manually on the storage and verify that it is
     // access on the executable.
     $storage->human_name = $this->randomName();
-    $this->assertIdentical($view->human_name, $storage->human_name);
+    $this->assertIdentical($view->storage->human_name, $storage->human_name);
   }
 
   /**
diff --git a/lib/Drupal/views/Tests/ViewStorageTest.php b/lib/Drupal/views/Tests/ViewStorageTest.php
index 186858c..22db4eb 100644
--- a/lib/Drupal/views/Tests/ViewStorageTest.php
+++ b/lib/Drupal/views/Tests/ViewStorageTest.php
@@ -201,15 +201,15 @@ protected function saveTests() {
     $config = config('views.view.archive_copy');
     $this->assertFalse($config->isNew(), 'New config has been loaded.');
 
-    $this->assertEqual($view->tag, $config->get('tag'), 'A changed value has been saved.');
+    $this->assertEqual($view->storage->tag, $config->get('tag'), 'A changed value has been saved.');
 
     // Change a value and save.
-    $view->tag = 'changed';
+    $view->storage->tag = 'changed';
     $view->save();
 
     // Check values have been written to config.
     $config = config('views.view.archive_copy')->get();
-    $this->assertEqual($view->tag, $config['tag'], 'View property saved to config.');
+    $this->assertEqual($view->storage->tag, $config['tag'], 'View property saved to config.');
 
     // Check whether load, save and load produce the same kind of view.
     $values = config('views.view.archive')->get();
diff --git a/lib/Drupal/views/ViewExecutable.php b/lib/Drupal/views/ViewExecutable.php
index 9914aec..025fdf4 100644
--- a/lib/Drupal/views/ViewExecutable.php
+++ b/lib/Drupal/views/ViewExecutable.php
@@ -513,33 +513,6 @@ public function __construct(ViewStorage $storage) {
     $this->storage->setExecutable($this);
   }
 
-  /**
-   * Implements the magic __get() method.
-   *
-   * @todo Remove this once all calls are changed to use storage directly.
-   */
-  public function &__get($name) {
-    if (property_exists($this->storage, $name)) {
-      return $this->storage->{$name};
-    }
-    elseif (property_exists($this, $name)) {
-      return $this->{$name};
-    }
-  }
-
-  /**
-   * Implements the magic __set() method.
-   *
-   * @todo Remove this once all calls are changed to use storage directly.
-   */
-  public function __set($name, $value) {
-    if (property_exists($this, $name)) {
-      $this->{$name} = $value;
-    }
-    elseif (property_exists($this->storage, $name)) {
-      $this->storage->{$name} = $value;
-    }
-  }
 
   /**
    * Implements the magic __call() method.
@@ -726,7 +699,7 @@ public function initDisplay($reset = FALSE) {
     }
 
     // Instantiate all displays
-    foreach (array_keys($this->display) as $id) {
+    foreach (array_keys($this->storage->display) as $id) {
       $this->displayHandlers[$id] = views_get_plugin('display', $this->storage->display[$id]['display_plugin']);
       if (!empty($this->displayHandlers[$id])) {
         // Initialize the new display handler with data.
@@ -798,9 +771,9 @@ public function setDisplay($display_id = NULL) {
     }
 
     // Ensure the requested display exists.
-    if (empty($this->display[$display_id])) {
+    if (empty($this->displayHandlers[$display_id])) {
       $display_id = 'default';
-      if (empty($this->display[$display_id])) {
+      if (empty($this->displayHandlers[$display_id])) {
         debug('set_display() called with invalid display ID @display.', array('@display' => $display_id));
         return FALSE;
       }
@@ -1087,7 +1060,7 @@ public function initQuery() {
 
     // Create and initialize the query object.
     $views_data = views_fetch_data($this->storage->base_table);
-    $this->base_field = !empty($views_data['table']['base']['field']) ? $views_data['table']['base']['field'] : '';
+    $this->storage->base_field = !empty($views_data['table']['base']['field']) ? $views_data['table']['base']['field'] : '';
     if (!empty($views_data['table']['base']['database'])) {
       $this->base_database = $views_data['table']['base']['database'];
     }
@@ -1103,7 +1076,7 @@ public function initQuery() {
       return FALSE;
     }
 
-    $this->query->init($this->storage->base_table, $this->base_field, $query_options['options']);
+    $this->query->init($this->storage->base_table, $this->storage->base_field, $query_options['options']);
     return TRUE;
   }
 
@@ -1583,7 +1556,7 @@ public function preExecute($args = array()) {
     }
 
     // Allow hook_views_pre_view() to set the dom_id, then ensure it is set.
-    $this->dom_id = !empty($this->dom_id) ? $this->dom_id : md5($this->name . REQUEST_TIME . rand());
+    $this->dom_id = !empty($this->dom_id) ? $this->dom_id : md5($this->storage->name . REQUEST_TIME . rand());
 
     // Allow the display handler to set up for execution
     $this->display_handler->preExecute();
@@ -1617,8 +1590,8 @@ public function attachDisplays() {
 
     $this->is_attachment = TRUE;
     // Give other displays an opportunity to attach to the view.
-    foreach ($this->display as $id => $display) {
-      if (!empty($this->display[$id])) {
+    foreach ($this->displayHandlers as $id => $display) {
+      if (!empty($this->displayHandlers[$id])) {
         $this->displayHandlers[$id]->attachTo($this->current_display);
       }
     }
diff --git a/lib/Drupal/views/ViewListController.php b/lib/Drupal/views/ViewListController.php
index c3c7231..343f323 100644
--- a/lib/Drupal/views/ViewListController.php
+++ b/lib/Drupal/views/ViewListController.php
@@ -81,8 +81,8 @@ public function getRowData(EntityInterface $view) {
     return array(
       'data' => array(
         'view_name' => theme('views_ui_view_info', array('view' => $view)),
-        'description' => $view->description,
-        'tag' => $view->tag,
+        'description' => $view->storage->description,
+        'tag' => $view->storage->tag,
         'path' => implode(', ', $view->getPaths()),
         'operations' => drupal_render($operations),
       ),
diff --git a/lib/Drupal/views/ViewStorage.php b/lib/Drupal/views/ViewStorage.php
index 512174f..276d6c1 100644
--- a/lib/Drupal/views/ViewStorage.php
+++ b/lib/Drupal/views/ViewStorage.php
@@ -153,45 +153,6 @@ public function initDisplay($reset = FALSE) {
   }
 
   /**
-   * Implements the magic __call() method.
-   *
-   * @todo Remove this once all calls are changed to use executable directly.
-   */
-  public function __call($name, $arguments) {
-    if (method_exists($this->executable, $name)) {
-      return call_user_func_array(array($this->executable, $name), $arguments);
-    }
-  }
-
-  /**
-   * Implements the magic __get() method.
-   *
-   * @todo Remove this once all calls are changed to use executable directly.
-   */
-  public function &__get($name) {
-    if (property_exists($this->executable, $name)) {
-      return $this->executable->{$name};
-    }
-    if (property_exists($this, $name)) {
-      return $this->{$name};
-    }
-  }
-
-  /**
-   * Implements the magic __set() method.
-   *
-   * @todo Remove this once all calls are changed to use executable directly.
-   */
-  public function __set($name, $value) {
-    if (property_exists($this, $name)) {
-      $this->{$name} = $value;
-    }
-    elseif (property_exists($this->executable, $name)) {
-      $this->executable->{$name} = $value;
-    }
-  }
-
-  /**
    * Returns the name of the module implementing this view.
    */
   public function getModule() {
diff --git a/lib/Views/block/Plugin/views/display/Block.php b/lib/Views/block/Plugin/views/display/Block.php
index 69f25b6..937b11d 100644
--- a/lib/Views/block/Plugin/views/display/Block.php
+++ b/lib/Views/block/Plugin/views/display/Block.php
@@ -52,15 +52,15 @@ protected function defineOptions() {
    * stuff with it.
    */
   public function executeHookBlockList($delta = 0, $edit = array()) {
-    $delta = $this->view->name . '-' . $this->display['id'];
+    $delta = $this->view->storage->name . '-' . $this->display['id'];
     $desc = $this->getOption('block_description');
 
     if (empty($desc)) {
       if ($this->display['display_title'] == $this->definition['title']) {
-        $desc = t('View: !view', array('!view' => $this->view->getHumanName()));
+        $desc = t('View: !view', array('!view' => $this->view->storage->getHumanName()));
       }
       else {
-        $desc = t('View: !view: !display', array('!view' => $this->view->getHumanName(), '!display' => $this->display['display_title']));
+        $desc = t('View: !view: !display', array('!view' => $this->view->storage->getHumanName(), '!display' => $this->display['display_title']));
       }
     }
     return array(
diff --git a/tests/views_test_data/views_test_data.module b/tests/views_test_data/views_test_data.module
index 62a67df..9f94f9a 100644
--- a/tests/views_test_data/views_test_data.module
+++ b/tests/views_test_data/views_test_data.module
@@ -48,7 +48,7 @@ function views_test_data_test_dynamic_access_callback($access, $argument1, $argu
  * Implements hook_views_pre_render().
  */
 function views_test_data_views_pre_render(&$view) {
-  if ($view->name == 'test_cache_header_storage') {
+  if ($view->storage->name == 'test_cache_header_storage') {
     drupal_add_js(drupal_get_path('module', 'views_test_data') . '/views_cache.test.js');
     drupal_add_css(drupal_get_path('module', 'views_test_data') . '/views_cache.test.css');
     $view->build_info['pre_render_called'] = TRUE;
@@ -59,7 +59,7 @@ function views_test_data_views_pre_render(&$view) {
  * Implements hook_views_post_build().
  */
 function views_test_data_views_post_build(ViewExecutable &$view) {
-  if ($view->name == 'test_page_display') {
+  if ($view->storage->name == 'test_page_display') {
     if ($view->current_display == 'page_1') {
       $view->build_info['denied'] = TRUE;
     }
diff --git a/theme/theme.inc b/theme/theme.inc
index 0a42b9e..075ac55 100644
--- a/theme/theme.inc
+++ b/theme/theme.inc
@@ -21,19 +21,19 @@ function _views_theme_functions($hook, $view, $display = NULL) {
   $themes = array();
 
   if ($display) {
-    $themes[] = $hook . '__' . $view->name . '__' . $display['id'];
+    $themes[] = $hook . '__' . $view->storage->name . '__' . $display['id'];
     $themes[] = $hook . '__' . $display['id'];
     // Add theme suggestions for each single tag.
-    foreach (drupal_explode_tags($view->tag) as $tag) {
+    foreach (drupal_explode_tags($view->storage->tag) as $tag) {
       $themes[] = $hook . '__' . preg_replace('/[^a-z0-9]/', '_', strtolower($tag));
     }
 
     if ($display['id'] != $display['display_plugin']) {
-      $themes[] = $hook . '__' . $view->name . '__' . $display['display_plugin'];
+      $themes[] = $hook . '__' . $view->storage->name . '__' . $display['display_plugin'];
       $themes[] = $hook . '__' . $display['display_plugin'];
     }
   }
-  $themes[] = $hook . '__' . $view->name;
+  $themes[] = $hook . '__' . $view->storage->name;
   $themes[] = $hook;
   return $themes;
 }
@@ -48,8 +48,8 @@ function template_preprocess_views_view(&$vars) {
 
   $vars['rows']       = (!empty($view->result) || $view->style_plugin->even_empty()) ? $view->style_plugin->render($view->result) : '';
 
-  $vars['css_name']   = drupal_clean_css_identifier($view->name);
-  $vars['name']       = $view->name;
+  $vars['css_name']   = drupal_clean_css_identifier($view->storage->name);
+  $vars['name']       = $view->storage->name;
   $vars['display_id'] = $view->current_display;
 
   // Basic classes
@@ -124,7 +124,7 @@ function template_preprocess_views_view(&$vars) {
         'ajax_path' => url('views/ajax'),
         'ajaxViews' => array(
           'views_dom_id:' . $vars['dom_id'] => array(
-            'view_name' => $view->name,
+            'view_name' => $view->storage->name,
             'view_display_id' => $view->current_display,
             'view_args' => check_plain(implode('/', $view->args)),
             'view_path' => check_plain(current_path()),
diff --git a/theme/views-ui-edit-view.tpl.php b/theme/views-ui-edit-view.tpl.php
index 5c3732c..566b8a4 100644
--- a/theme/views-ui-edit-view.tpl.php
+++ b/theme/views-ui-edit-view.tpl.php
@@ -21,7 +21,7 @@
       <?php print $quick_links ?>
     </div>
     <?php print t('View %name, displaying items of type <strong>@base</strong>.',
-        array('%name' => $view->name, '@base' => $base_table)); ?>
+        array('%name' => $view->storage->name, '@base' => $base_table)); ?>
   </div>
 
   <?php print $tabs; ?>
diff --git a/views.module b/views.module
index 7cd7ae6..2e6f08d 100644
--- a/views.module
+++ b/views.module
@@ -131,7 +131,7 @@ function views_forms($form_id, $args) {
 function views_form_id($view) {
   $parts = array(
     'views_form',
-    $view->name,
+    $view->storage->name,
     $view->current_display,
   );
 
@@ -373,7 +373,7 @@ function views_plugin_list() {
         }
 
         // Add this view to the list for this plugin.
-        $plugins[$key]['views'][$view->name] = $view->name;
+        $plugins[$key]['views'][$view->storage->name] = $view->storage->name;
       }
     }
   }
@@ -390,11 +390,11 @@ function views_plugin_list() {
  */
 function views_preprocess_node(&$vars) {
   // The 'view' attribute of the node is added in views_preprocess_node()
-  if (!empty($vars['node']->view) && !empty($vars['node']->view->name)) {
+  if (!empty($vars['node']->view) && !empty($vars['node']->view->storage->name)) {
     $vars['view'] = $vars['node']->view;
-    $vars['theme_hook_suggestions'][] = 'node__view__' . $vars['node']->view->name;
+    $vars['theme_hook_suggestions'][] = 'node__view__' . $vars['node']->view->storage->name;
     if (!empty($vars['node']->view->current_display)) {
-      $vars['theme_hook_suggestions'][] = 'node__view__' . $vars['node']->view->name . '__' . $vars['node']->view->current_display;
+      $vars['theme_hook_suggestions'][] = 'node__view__' . $vars['node']->view->storage->name . '__' . $vars['node']->view->current_display;
 
       // If a node is being rendered in a view, and the view does not have a path,
       // prevent drupal from accidentally setting the $page variable:
@@ -416,11 +416,11 @@ function views_preprocess_node(&$vars) {
  */
 function views_preprocess_comment(&$vars) {
   // The 'view' attribute of the node is added in template_preprocess_views_view_row_comment()
-  if (!empty($vars['node']->view) && !empty($vars['node']->view->name)) {
+  if (!empty($vars['node']->view) && !empty($vars['node']->view->storage->name)) {
     $vars['view'] = &$vars['node']->view;
-    $vars['theme_hook_suggestions'][] = 'comment__view__' . $vars['node']->view->name;
+    $vars['theme_hook_suggestions'][] = 'comment__view__' . $vars['node']->view->storage->name;
     if (!empty($vars['node']->view->current_display)) {
-      $vars['theme_hook_suggestions'][] = 'comment__view__' . $vars['node']->view->name . '__' . $vars['node']->view->current_display;
+      $vars['theme_hook_suggestions'][] = 'comment__view__' . $vars['node']->view->storage->name . '__' . $vars['node']->view->current_display;
     }
   }
 }
@@ -699,7 +699,7 @@ function views_block_info() {
     }
 
     $view->initDisplay();
-    foreach ($view->displayHandlers as $display) {
+    foreach ($view->executable->displayHandlers as $display) {
 
       if (isset($display) && !empty($display->definition['uses_hook_block'])) {
         $result = $display->executeHookBlockList();
@@ -902,7 +902,7 @@ function views_add_contextual_links(&$render_element, $location, $view, $display
     // Also do not do anything if the display plugin has not defined any
     // contextual links that are intended to be displayed in the requested
     // location.
-    $plugin = views_get_plugin_definition('display', $view->display[$display_id]['display_plugin']);
+    $plugin = views_get_plugin_definition('display', $view->displayHandlers[$display_id]->display['display_plugin']);
     // If contextual_links_locations are not set, provide a sane default. (To
     // avoid displaying any contextual links at all, a display plugin can still
     // set 'contextual_links_locations' to, e.g., {""}.)
@@ -945,7 +945,7 @@ function views_add_contextual_links(&$render_element, $location, $view, $display
           $render_element['#views_contextual_links_info'][$module] = array(
             'location' => $location,
             'view' => $view,
-            'view_name' => $view->name,
+            'view_name' => $view->storage->name,
             'view_display_id' => $display_id,
           );
         }
@@ -1543,6 +1543,7 @@ function views_get_applicable_views($type) {
 
   foreach ($views as $view) {
     $view = new ViewExecutable($view);
+    $view->initDisplay();
     // Skip disabled views.
     if (!empty($view->storage->disabled)) {
       continue;
@@ -1555,8 +1556,8 @@ function views_get_applicable_views($type) {
 
     // Loop on array keys because something seems to muck with $view->display
     // a bit in PHP4.
-    foreach (array_keys($view->display) as $id) {
-      $plugin = views_get_plugin_definition('display', $view->display[$id]['display_plugin']);
+    foreach (array_keys($view->displayHandlers) as $id) {
+      $plugin = views_get_plugin_definition('display', $view->displayHandlers[$id]->display['display_plugin']);
       if (!empty($plugin[$type])) {
         // This view uses_hook_menu. Clone it so that different handlers
         // don't trip over each other, and add it to the list.
@@ -1615,7 +1616,7 @@ function views_get_disabled_views() {
  * @param  mixed $exclude_view
  *  view or current display to exclude
  *  either a
- *  - views object (containing $exclude_view->name and $exclude_view->current_display)
+ *  - views object (containing $exclude_view->storage->name and $exclude_view->current_display)
  *  - views name as string:  e.g. my_view
  *  - views name and display id (separated by ':'): e.g. my_view:default
  * @param bool $optgroup
@@ -1648,7 +1649,7 @@ function views_get_views_as_options($views_only = FALSE, $filter = 'all', $exclu
     $exclude_view_display = '';
   }
   elseif (is_object($exclude_view)) {
-    $exclude_view_name = $exclude_view->name;
+    $exclude_view_name = $exclude_view->storage->name;
     $exclude_view_display = $exclude_view->current_display;
   }
   else {
@@ -1658,18 +1659,18 @@ function views_get_views_as_options($views_only = FALSE, $filter = 'all', $exclu
   $options = array();
   foreach ($views as $view) {
     // Return only views.
-    if ($views_only && $view->name != $exclude_view_name) {
-      $options[$view->name] = $view->getHumanName();
+    if ($views_only && $view->storage->name != $exclude_view_name) {
+      $options[$view->storage->name] = $view->getHumanName();
     }
     // Return views with display ids.
     else {
       foreach ($view->display as $display_id => $display) {
-        if (!($view->name == $exclude_view_name && $display_id == $exclude_view_display)) {
+        if (!($view->storage->name == $exclude_view_name && $display_id == $exclude_view_display)) {
           if ($optgroup) {
-            $options[$view->name][$view->name . ':' . $display['id']] = t('@view : @display', array('@view' => $view->name, '@display' => $display['id']));
+            $options[$view->storage->name][$view->storage->name . ':' . $display['id']] = t('@view : @display', array('@view' => $view->storage->name, '@display' => $display['id']));
           }
           else {
-            $options[$view->name . ':' . $display['id']] = t('View: @view - Display: @display', array('@view' => $view->name, '@display' => $display['id']));
+            $options[$view->storage->name . ':' . $display['id']] = t('View: @view - Display: @display', array('@view' => $view->storage->name, '@display' => $display['id']));
           }
         }
       }
@@ -1972,7 +1973,7 @@ function views_exposed_form($form, &$form_state) {
   // Let form plugins know this is for exposed widgets.
   $form_state['exposed'] = TRUE;
   // Check if the form was already created
-  if ($cache = views_exposed_form_cache($view->name, $view->current_display)) {
+  if ($cache = views_exposed_form_cache($view->storage->name, $view->current_display)) {
     return $cache;
   }
 
@@ -2006,12 +2007,12 @@ function views_exposed_form($form, &$form_state) {
     '#name' => '',
     '#type' => 'submit',
     '#value' => t('Apply'),
-    '#id' => drupal_html_id('edit-submit-' . $view->name),
+    '#id' => drupal_html_id('edit-submit-' . $view->storage->name),
   );
 
   $form['#action'] = url($view->display_handler->getUrl());
   $form['#theme'] = views_theme_functions('views_exposed_form', $view, $display);
-  $form['#id'] = drupal_clean_css_identifier('views_exposed_form-' . check_plain($view->name) . '-' . check_plain($display['id']));
+  $form['#id'] = drupal_clean_css_identifier('views_exposed_form-' . check_plain($view->storage->name) . '-' . check_plain($display['id']));
 //  $form['#attributes']['class'] = array('views-exposed-form');
 
   // If using AJAX, we need the form plugin.
@@ -2023,7 +2024,7 @@ function views_exposed_form($form, &$form_state) {
   $exposed_form_plugin->exposed_form_alter($form, $form_state);
 
   // Save the form
-  views_exposed_form_cache($view->name, $view->current_display, $form);
+  views_exposed_form_cache($view->storage->name, $view->current_display, $form);
 
   return $form;
 }
diff --git a/views.tokens.inc b/views.tokens.inc
index 4858fba..f65a345 100644
--- a/views.tokens.inc
+++ b/views.tokens.inc
@@ -58,15 +58,15 @@ function views_tokens($type, $tokens, array $data = array(), array $options = ar
     foreach ($tokens as $name => $original) {
       switch ($name) {
         case 'name':
-          $replacements[$original] = $sanitize ? check_plain($view->human_name) : $view->human_name;
+          $replacements[$original] = $sanitize ? check_plain($view->storage->human_name) : $view->storage->human_name;
           break;
 
         case 'description':
-          $replacements[$original] = $sanitize ? check_plain($view->description) : $view->description;
+          $replacements[$original] = $sanitize ? check_plain($view->storage->description) : $view->storage->description;
           break;
 
         case 'machine-name':
-          $replacements[$original] = $view->name;
+          $replacements[$original] = $view->storage->name;
           break;
 
         case 'title':
diff --git a/views_ui.module b/views_ui.module
index 3622229..5bfc370 100644
--- a/views_ui.module
+++ b/views_ui.module
@@ -271,9 +271,9 @@ function views_ui_custom_theme() {
 function views_ui_edit_page_title($view) {
   module_load_include('inc', 'views_ui', 'includes/admin');
   $bases = views_fetch_base_tables();
-  $name = $view->getHumanName();
-  if (isset($bases[$view->base_table])) {
-    $name .= ' (' . $bases[$view->base_table]['title'] . ')';
+  $name = $view->storage->getHumanName();
+  if (isset($bases[$view->storage->base_table])) {
+    $name .= ' (' . $bases[$view->storage->base_table]['title'] . ')';
   }
 
   return $name;
@@ -298,7 +298,7 @@ function views_ui_cache_load($name) {
     $view = $original_view;
     if (!empty($view)) {
       // Check to see if someone else is already editing this view.
-      $view->locked = $views_temp_store->isLocked($view->name);
+      $view->locked = $views_temp_store->isLocked($view->storage->name);
       // Set a flag to indicate that this view is being edited.
       // This flag will be used e.g. to determine whether strings
       // should be localized.
@@ -308,7 +308,7 @@ function views_ui_cache_load($name) {
   else {
     // Keep disabled/enabled status real.
     if ($original_view) {
-      $view->disabled = $original_view->disabled;
+      $view->storage->disabled = $original_view->storage->disabled;
     }
   }
 
@@ -346,7 +346,7 @@ function views_ui_cache_set(&$view) {
   foreach (array_keys($view->display) as $id) {
     unset($view->displayHandlers[$id]);
   }
-  views_temp_store()->set($view->name, $view);
+  views_temp_store()->set($view->storage->name, $view);
 }
 
 /**
@@ -475,13 +475,13 @@ function views_ui_view_preview_section_handler_links($view, $type, $title = FALS
     $field_name = $handler->adminLabel(TRUE);
     $links[$type . '-edit-' . $id] = array(
       'title' => t('Edit @section', array('@section' => $field_name)),
-      'href' => "admin/structure/views/nojs/config-item/$view->name/{$display['id']}/$type/$id",
+      'href' => "admin/structure/views/nojs/config-item/{$view->storage->name}/{$display['id']}/$type/$id",
       'attributes' => array('class' => array('views-ajax-link')),
     );
   }
   $links[$type . '-add'] = array(
     'title' => t('Add new'),
-    'href' => "admin/structure/views/nojs/add-item/$view->name/{$display['id']}/$type",
+    'href' => "admin/structure/views/nojs/add-item/{$view->storage->name}/{$display['id']}/$type",
     'attributes' => array('class' => array('views-ajax-link')),
   );
 
@@ -496,7 +496,7 @@ function views_ui_view_preview_section_display_category_links($view, $type, $tit
   $links = array(
     $type . '-edit' => array(
       'title' => t('Edit @section', array('@section' => $title)),
-      'href' => "admin/structure/views/nojs/display/$view->name/{$display['id']}/$type",
+      'href' => "admin/structure/views/nojs/display/{$view->storage->name}/{$display['id']}/$type",
       'attributes' => array('class' => array('views-ajax-link')),
     ),
   );
@@ -598,7 +598,7 @@ function views_ui_get_form_wizard_instance($wizard) {
 function views_ui_views_plugins_alter(&$plugins) {
   // @todo This currently does not work, investigate annotation alters.
   // Attach contextual links to each display plugin. The links will point to
-  // paths underneath "admin/structure/views/view/{$view->name}" (i.e., paths
+  // paths underneath "admin/structure/views/view/{$view->storage->name}" (i.e., paths
   // for editing and performing other contextual actions on the view).
   foreach ($plugins['display'] as &$display) {
     $display['contextual links']['views_ui'] = array(
diff --git a/views_ui_listing/views_ui_listing.module b/views_ui_listing/views_ui_listing.module
index 34a926f..bb08f93 100644
--- a/views_ui_listing/views_ui_listing.module
+++ b/views_ui_listing/views_ui_listing.module
@@ -63,7 +63,7 @@ function views_ui_listing_entity_listing_page($entity_id) {
  */
 function views_ui_listing_ajax_callback(EntityListControllerInterface $controller, ViewExecutable $entity, $op) {
   // Perform the operation.
-  $entity->$op();
+  $entity->storage->$op();
 
   // If the request is via AJAX, return the rendered list as JSON.
   if (drupal_container()->get('request')->request->get('js')) {
