diff --git a/core/modules/system/lib/Drupal/system/Plugin/views/area/Entity.php b/core/modules/system/lib/Drupal/system/Plugin/views/area/Entity.php
new file mode 100644
index 0000000..d5705a6
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/Plugin/views/area/Entity.php
@@ -0,0 +1,119 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Plugin\views\area\Entity.
+ */
+
+namespace Drupal\system\Plugin\views\area;
+
+use Drupal\views\ViewExecutable;
+use Drupal\Core\Annotation\Plugin;
+use Drupal\views\Plugin\views\area\AreaPluginBase;
+
+/**
+ * Provides an area handler which renders an entity in a certain view mode.
+ *
+ * @ingroup views_area_handlers
+ *
+ * @Plugin(
+ *   id = "entity"
+ * )
+ */
+class Entity extends AreaPluginBase {
+
+  /**
+   * Stores the entity type of the result entities.
+   *
+   * @var string
+   */
+  protected $entityType;
+
+  /**
+   * Contains the entity info of the entity type of this row plugin instance.
+   *
+   * @see entity_get_info
+   */
+  protected $entityInfo;
+
+  /**
+   * Overrides \Drupal\views\Plugin\views\area\AreaPluginBase::init().
+   */
+  public function init(ViewExecutable $view, &$display, $options = NULL) {
+    parent::init($view, $display, $options);
+    $this->entityType = $this->definition['entity_type'];
+
+    $this->entityInfo = entity_get_info($this->entityType);
+  }
+
+  /**
+   * Overrides \Drupal\views\Plugin\views\area\AreaPluginBase::defineOptions().
+   */
+  protected function defineOptions() {
+    $options = parent::defineOptions();
+
+    $options['entity_id'] = array('default' => '');
+    $options['view_mode'] = array('default' => '');
+
+    return $options;
+  }
+
+  /**
+   * Overrides \Drupal\views\Plugin\views\area\AreaPluginBase::buildOptionsForm().
+   */
+  public function buildOptionsForm(&$form, &$form_state) {
+    parent::buildOptionsForm($form, $form_state);
+
+    $options = $this->buildViewModeOptions();
+    $form['view_mode'] = array(
+      '#type' => 'select',
+      '#options' => $options,
+      '#title' => t('View mode'),
+      '#default_value' => $this->options['view_mode'],
+    );
+
+    $form['entity_id'] = array(
+      '#title' => t('ID'),
+      '#type' => 'textfield',
+      '#default_value' => $this->options['entity_id'],
+    );
+
+    // Add tokenization form elements.
+    $this->tokenForm($form, $form_state);
+
+
+  }
+
+  /**
+   * Return the main options, which are shown in the summary title.
+   *
+   * @return array
+   *   All view modes of the entity type.
+   */
+  protected function buildViewModeOptions() {
+    $options = array();
+    if (!empty($this->entityInfo['view_modes'])) {
+      foreach ($this->entityInfo['view_modes'] as $mode => $settings) {
+        $options[$mode] = $settings['label'];
+      }
+    }
+
+    return $options;
+  }
+
+  /**
+   * Overrides \Drupal\views\Plugin\views\area\AreaPluginBase::render().
+   */
+  function render($empty = FALSE) {
+    if (!$empty || !empty($this->options['empty'])) {
+      $entity_id = $this->globalTokenReplace($this->options['entity_id']);
+      if ($entity = entity_load($this->entityType, $entity_id)) {
+        $build = entity_view($entity, $this->options['view_mode']);
+        return drupal_render($build);
+      }
+    }
+
+    return '';
+  }
+
+}
diff --git a/core/modules/system/lib/Drupal/system/Tests/Views/EntityAreaTest.php b/core/modules/system/lib/Drupal/system/Tests/Views/EntityAreaTest.php
new file mode 100644
index 0000000..21bd7e3
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/Tests/Views/EntityAreaTest.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Tests\Views\EntityAreaTest.
+ */
+
+namespace Drupal\system\Tests\Views;
+
+use Drupal\views\Tests\ViewTestBase;
+use Drupal\views\Tests\ViewUnitTestBase;
+
+/**
+ * Tests the generic entity area handler.
+ *
+ * @see \Drupal\system\Plugin\views\area\Entity
+ */
+class EntityAreaTest extends ViewTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('entity_test');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Area: Entity',
+      'description' => 'Tests the generic entity area handler.',
+      'group' => 'Views Modules',
+    );
+  }
+
+  protected function setUp() {
+    parent::setUp();
+
+    $this->enableViewsTestModule();
+  }
+
+  /**
+   * Tests the area handler.
+   */
+  public function testEntityArea() {
+    // @todo The entity_test entity isn't rendered so let's use node.
+    $entity_test = $this->drupalCreateNode();
+
+    $view = views_get_view('test_entity_area');
+    $this->drupalSetContent($view->preview());
+
+    $this->assertText($entity_test->label(), 'The rendered entity appears in the header of the view.');
+  }
+
+}
diff --git a/core/modules/system/system.views.inc b/core/modules/system/system.views.inc
new file mode 100644
index 0000000..a0a3ae5
--- /dev/null
+++ b/core/modules/system/system.views.inc
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * @file
+ * Provide views data and handlers for node.module.
+ *
+ * @ingroup views_module_handlers
+ */
+
+/**
+ * Implements hook_views_data_alter().
+ */
+function system_views_data_alter(&$data) {
+  // Registers on area per entity type.
+  foreach (entity_get_info() as $entity_type => $entity_info) {
+    // Views already have a custom area handler.
+    if ($entity_type != 'views') {
+      $label = $entity_info['label'];
+      $data['views']['entity_' . $entity_type] = array(
+        'title' => t('Rendered @entity_label', array('@entity_label' => $label)),
+        'help' => t('Shows an @label in the area.', array('@label' => $label)),
+        'area' => array(
+          'entity_type' => $entity_type,
+          'id' => 'entity',
+        ),
+      );
+    }
+  }
+}
diff --git a/core/modules/views/tests/views_test_config/config/views.view.test_entity_area.yml b/core/modules/views/tests/views_test_config/config/views.view.test_entity_area.yml
new file mode 100644
index 0000000..e9d5421
--- /dev/null
+++ b/core/modules/views/tests/views_test_config/config/views.view.test_entity_area.yml
@@ -0,0 +1,55 @@
+api_version: '3.0'
+base_table: views_test_data
+core: '8'
+description: ''
+disabled: '0'
+display:
+  default:
+    display_options:
+      defaults:
+        fields: '0'
+        pager: '0'
+        pager_options: '0'
+        sorts: '0'
+      header:
+        entity_node:
+          field: entity_node
+          id: entity_node
+          table: views
+          entity_id: 1
+          view_mode: full
+      fields:
+        age:
+          field: age
+          id: age
+          relationship: none
+          table: views_test_data
+        id:
+          field: id
+          id: id
+          relationship: none
+          table: views_test_data
+        name:
+          field: name
+          id: name
+          relationship: none
+          table: views_test_data
+      pager:
+        options:
+          offset: '0'
+        type: none
+      pager_options: {  }
+      sorts:
+        id:
+          field: id
+          id: id
+          order: ASC
+          relationship: none
+          table: views_test_data
+    display_plugin: default
+    display_title: Master
+    id: default
+    position: '0'
+human_name: ''
+name: test_entity_area
+tag: ''
