diff --git a/core/modules/views/src/Form/ViewsExposedForm.php b/core/modules/views/src/Form/ViewsExposedForm.php
index ee2fa2d..8ae8826 100644
--- a/core/modules/views/src/Form/ViewsExposedForm.php
+++ b/core/modules/views/src/Form/ViewsExposedForm.php
@@ -10,6 +10,7 @@
 use Drupal\Component\Utility\String;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\views\Views;
 use Drupal\views\ExposedFormCache;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -65,8 +66,10 @@ public function buildForm(array $form, FormStateInterface $form_state) {
     // multiple times per page.
     $form_state->setValidationEnforced();
     /** @var \Drupal\views\ViewExecutable $view */
-    $view = $form_state->get('view');
-    $display = &$form_state->get('display');
+    $view = Views::getView($form_state->get('view_id'));
+    $view->setDisplay($form_state->get('display_id'));
+    $view->initHandlers();
+    $display = &$view->display_handler->display;
 
     $form_state->setUserInput($view->getExposedInput());
 
@@ -120,7 +123,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
     // $form['#attributes']['class'] = array('views-exposed-form');
 
     /** @var \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase $exposed_form_plugin */
-    $exposed_form_plugin = $form_state->get('exposed_form_plugin');
+    $exposed_form_plugin = $view->display_handler->getPlugin('exposed_form');
     $exposed_form_plugin->exposedFormAlter($form, $form_state);
 
     // Save the form.
@@ -133,15 +136,19 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function validateForm(array &$form, FormStateInterface $form_state) {
+    $view = Views::getView($form_state->get('view_id'));
+    $view->setDisplay($form_state->get('display_id'));
+    $view->initHandlers();
+
     foreach (array('field', 'filter') as $type) {
       /** @var \Drupal\views\Plugin\views\ViewsHandlerInterface[] $handlers */
-      $handlers = &$form_state->get('view')->$type;
+      $handlers = &$view->$type;
       foreach ($handlers as $key => $handler) {
         $handlers[$key]->validateExposed($form, $form_state);
       }
     }
     /** @var \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase $exposed_form_plugin */
-    $exposed_form_plugin = $form_state->get('exposed_form_plugin');
+    $exposed_form_plugin = $view->display_handler->getPlugin('exposed_form');
     $exposed_form_plugin->exposedFormValidate($form, $form_state);
   }
 
@@ -149,20 +156,23 @@ public function validateForm(array &$form, FormStateInterface $form_state) {
    * {@inheritdoc}
    */
   public function submitForm(array &$form, FormStateInterface $form_state) {
+    $view = Views::getView($form_state->get('view_id'));
+    $view->setDisplay($form_state->get('display_id'));
+    $view->initHandlers();
+
     foreach (array('field', 'filter') as $type) {
       /** @var \Drupal\views\Plugin\views\ViewsHandlerInterface[] $handlers */
-      $handlers = &$form_state->get('view')->$type;
+      $handlers = &$view->$type;
       foreach ($handlers as $key => $info) {
         $handlers[$key]->submitExposed($form, $form_state);
       }
     }
-    $view = $form_state->get('view');
     $view->exposed_data = $form_state->getValues();
     $view->exposed_raw_input = [];
 
     $exclude = array('submit', 'form_build_id', 'form_id', 'form_token', 'exposed_form_plugin', '', 'reset');
     /** @var \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase $exposed_form_plugin */
-    $exposed_form_plugin = $form_state->get('exposed_form_plugin');
+    $exposed_form_plugin = $view->display_handler->getPlugin('exposed_form');
     $exposed_form_plugin->exposedFormSubmit($form, $form_state, $exclude);
 
     foreach ($form_state->getValues() as $key => $value) {
diff --git a/core/modules/views/src/Form/ViewsForm.php b/core/modules/views/src/Form/ViewsForm.php
index c1296b2..a223400 100644
--- a/core/modules/views/src/Form/ViewsForm.php
+++ b/core/modules/views/src/Form/ViewsForm.php
@@ -14,6 +14,7 @@
 use Drupal\Core\Form\FormInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Routing\UrlGeneratorInterface;
+use Drupal\views\Views;
 use Drupal\views\ViewExecutable;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
@@ -115,13 +116,17 @@ public function getFormID() {
   /**
    * {@inheritdoc}
    */
-  public function buildForm(array $form, FormStateInterface $form_state, ViewExecutable $view = NULL, $output = []) {
+  public function buildForm(array $form, FormStateInterface $form_state, $view_id = NULL, $display_id = NULL, $output = []) {
     if (!$step = $form_state->get('step')) {
       $step = 'views_form_views_form';
       $form_state->set('step', $step);
     }
     $form_state->set(['step_controller', 'views_form_views_form'], 'Drupal\views\Form\ViewsFormMainForm');
 
+    $view = Views::getView($view_id);
+    $view->setDisplay($display_id);
+    $view->initHandlers();
+
     // Cache the built form to prevent it from being rebuilt prior to validation
     // and submission, which could lead to data being processed incorrectly,
     // because the views rows (and thus, the form elements as well) have changed
diff --git a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
index 0dd89bb..30fcdec 100644
--- a/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
+++ b/core/modules/views/src/Plugin/views/display/DisplayPluginBase.php
@@ -2208,7 +2208,7 @@ public function elementPreRender(array $element) {
       }
 
       $form_object = ViewsForm::create(\Drupal::getContainer(), $view->storage->id(), $view->current_display);
-      $form = \Drupal::formBuilder()->getForm($form_object, $view, $output);
+      $form = \Drupal::formBuilder()->getForm($form_object, $view->storage->id(), $view->current_display, $output);
       // The form is requesting that all non-essential views elements be hidden,
       // usually because the rendered step is not a view result.
       if ($form['show_view_elements']['#value'] == FALSE) {
diff --git a/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php b/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php
index e7aa591..7c1b029 100644
--- a/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php
+++ b/core/modules/views/src/Plugin/views/exposed_form/ExposedFormPluginBase.php
@@ -131,8 +131,8 @@ public function renderExposedForm($block = FALSE) {
     // Deal with any exposed filters we may have, before building.
     $form_state = (new FormState())
       ->setStorage([
-        'view' => $this->view,
-        'display' => &$this->view->display_handler->display,
+        'view_id' => $this->view->storage->id(),
+        'display_id' => $this->view->current_display,
         'rerender' => TRUE,
       ])
       ->setMethod('get')
@@ -150,7 +150,6 @@ public function renderExposedForm($block = FALSE) {
       $form_state->set('ajax', TRUE);
     }
 
-    $form_state->set('exposed_form_plugin', $this);
     $form = \Drupal::formBuilder()->buildForm('\Drupal\views\Form\ViewsExposedForm', $form_state);
 
     if (!$this->view->display_handler->displaysExposed() || (!$block && $this->view->display_handler->getOption('exposed_block'))) {
@@ -258,6 +257,8 @@ public function exposedFormAlter(&$form, FormStateInterface $form_state) {
         '#weight' => 10,
       );
 
+      $exposed_filters = array();
+
       // Get an array of exposed filters, keyed by identifier option.
       foreach ($this->view->filter as $id => $handler) {
         if ($handler->canExpose() && $handler->isExposed() && !empty($handler->options['expose']['identifier'])) {
diff --git a/core/modules/views/src/ViewExecutable.php b/core/modules/views/src/ViewExecutable.php
index 94fbcc0..9f6b8d1 100644
--- a/core/modules/views/src/ViewExecutable.php
+++ b/core/modules/views/src/ViewExecutable.php
@@ -258,7 +258,7 @@ class ViewExecutable {
    *
    * @var array
    */
-  public $field;
+  public $field = array();
 
   /**
    * Stores the argument handlers which are initialized on this view.
@@ -268,7 +268,7 @@ class ViewExecutable {
    *
    * @var array
    */
-  public $argument;
+  public $argument = array();
 
   /**
    * Stores the sort handlers which are initialized on this view.
@@ -277,7 +277,7 @@ class ViewExecutable {
    *
    * @var array
    */
-  public $sort;
+  public $sort = array();
 
   /**
    * Stores the filter handlers which are initialized on this view.
@@ -287,7 +287,7 @@ class ViewExecutable {
    *
    * @var array
    */
-  public $filter;
+  public $filter = array();
 
   /**
    * Stores the relationship handlers which are initialized on this view.
@@ -297,7 +297,7 @@ class ViewExecutable {
    *
    * @var array
    */
-  public $relationship;
+  public $relationship = array();
 
   /**
    * Stores the area handlers for the header which are initialized on this view.
@@ -306,7 +306,7 @@ class ViewExecutable {
    *
    * @var array
    */
-  public $header;
+  public $header = array();
 
   /**
    * Stores the area handlers for the footer which are initialized on this view.
@@ -315,7 +315,7 @@ class ViewExecutable {
    *
    * @var array
    */
-  public $footer;
+  public $footer = array();
 
   /**
    * Stores the area handlers for the empty text which are initialized on this view.
@@ -324,7 +324,7 @@ class ViewExecutable {
    *
    * @var array
    */
-  public $empty;
+  public $empty = array();
 
   /**
    * Stores the current response object.
@@ -622,9 +622,7 @@ public function initDisplay() {
     $this->displayHandlers = new DisplayBag($this, Views::pluginManager('display'));
 
     $this->current_display = 'default';
-    $this->display_handler = $this->displayHandlers->get('default');
-
-    return TRUE;
+    $this->display_handler = $this->displayHandlers->get('default');   return TRUE;
   }
 
   /**
@@ -2166,4 +2164,7 @@ public function calculateDependencies() {
     return $this->storage->calculateDependencies();
   }
 
+  public function __sleep() {
+    return array();
+  }
 }
