diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php
index eac7318..72daea1 100644
--- a/core/lib/Drupal/Core/Extension/ModuleHandler.php
+++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php
@@ -811,8 +811,7 @@ public function install(array $module_list, $enable_dependencies = TRUE) {
         // Now install the module's schema if necessary.
         drupal_install_schema($module);
 
-        // Clear plugin manager caches.
-        \Drupal::getContainer()->get('plugin.cache_clearer')->clearCachedDefinitions();
+        drupal_flush_all_caches();
 
         // Set the schema version to the number of the last update provided by
         // the module, or the minimum core schema version.
diff --git a/core/lib/Drupal/Core/Render/ElementInfoManager.php b/core/lib/Drupal/Core/Render/ElementInfoManager.php
index 1dd2be4..2df59c4 100644
--- a/core/lib/Drupal/Core/Render/ElementInfoManager.php
+++ b/core/lib/Drupal/Core/Render/ElementInfoManager.php
@@ -90,6 +90,16 @@ protected function buildInfo() {
 
   /**
    * {@inheritdoc}
+   */
+  public function clearCachedDefinitions() {
+    parent::clearCachedDefinitions();
+
+    // Force the element info to be rebuilt.
+    unset($this->elementInfo);
+  }
+
+  /**
+   * {@inheritdoc}
    *
    * @return \Drupal\Core\Render\Element\ElementInterface
    */
diff --git a/core/modules/views/src/Element/View.php b/core/modules/views/src/Element/View.php
new file mode 100644
index 0000000..c9e084b
--- /dev/null
+++ b/core/modules/views/src/Element/View.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Element\View.
+ */
+
+namespace Drupal\views\Element;
+
+use Drupal\Core\Render\Element\RenderElement;
+use Drupal\views\Views;
+
+/**
+ * Provides a render element to display a view.
+ *
+ * @RenderElement("view")
+ */
+class View extends RenderElement {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getInfo() {
+    $class = get_class($this);
+    return array(
+      '#theme_wrappers' => array('container'),
+      '#pre_render' => array(
+        array($class, 'preRenderViewElement'),
+      ),
+      '#name' => NULL,
+      '#display_id' => 'default',
+      '#arguments' => array(),
+    );
+  }
+
+  /**
+   * View element pre render callback.
+   */
+  public static function preRenderViewElement($element) {
+    $element['#attributes']['class'][] = 'views-element-container';
+
+    $view = Views::getView($element['#name']);
+    if ($view && $view->access($element['#display_id'])) {
+      $element['view'] = $view->preview($element['#display_id'], $element['#arguments']);
+    }
+
+    return $element;
+  }
+
+}
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index 3294836..3feea55 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -47,20 +47,6 @@ function views_help($route_name, RouteMatchInterface $route_match) {
 }
 
 /**
- * Implements hook_element_info().
- */
-function views_element_info() {
-  $types['view'] = array(
-    '#theme_wrappers' => array('container'),
-    '#pre_render' => array('views_pre_render_view_element'),
-    '#name' => NULL,
-    '#display_id' => 'default',
-    '#arguments' => array(),
-  );
-  return $types;
-}
-
-/**
  * Implements hook_views_pre_render().
  */
 function views_views_pre_render($view) {
@@ -92,20 +78,6 @@ function views_views_pre_render($view) {
 }
 
 /**
- * View element pre render callback.
- */
-function views_pre_render_view_element($element) {
-  $element['#attributes']['class'][] = 'views-element-container';
-
-  $view = Views::getView($element['#name']);
-  if ($view && $view->access($element['#display_id'])) {
-    $element['view'] = $view->preview($element['#display_id'], $element['#arguments']);
-  }
-
-  return $element;
-}
-
-/**
  * Implements hook_theme().
  *
  * Register views theming functions and those that are defined via views plugin
diff --git a/modules/README.txt b/modules/README.txt
deleted file mode 100644
index 339aa00..0000000
--- a/modules/README.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-Place downloaded and custom modules that extend your site functionality beyond
-Drupal core in this directory to ensure clean separation from core modules and
-to facilitate safe, self-contained code updates. Contributed modules from the
-Drupal community may be downloaded at http://drupal.org/project/modules.
-
-It is safe to organize modules into subdirectories, such as "contrib" for
-contributed modules, and "custom" for custom modules. Note that if you move a
-module to a subdirectory after it has been enabled, you may need to clear the
-Drupal cache so that it can be found.
-
-In multisite configuration, modules found in this directory are available to
-all sites. In addition to this directory, shared common modules may also be kept
-in the sites/all/modules directory and will take precedence over modules in this
-directory. Alternatively, the sites/your_site_name/modules directory pattern may
-be used to restrict modules to a specific site instance.
-
-Refer to the "Developing for Drupal" section of the README.txt in the Drupal
-root directory for further information on extending Drupal with custom modules.
