diff --git a/core/modules/display/config/display.bound.admin_master.yml b/core/modules/display/config/display.bound.admin_master.yml
new file mode 100644
index 0000000..65aaf23
--- /dev/null
+++ b/core/modules/display/config/display.bound.admin_master.yml
@@ -0,0 +1,5 @@
+id: admin_master
+label: Default admin layout
+layout: static_layout:layout__two-col
+layoutSettings: { }
+blockInfo:
diff --git a/core/modules/display/config/display.bound.front_master.yml b/core/modules/display/config/display.bound.front_master.yml
new file mode 100644
index 0000000..54cf310
--- /dev/null
+++ b/core/modules/display/config/display.bound.front_master.yml
@@ -0,0 +1,5 @@
+id: front_master
+label: Default layout
+layout: static_layout:layout__two-col
+layoutSettings: { }
+blockInfo:
diff --git a/core/modules/display/display.admin.inc b/core/modules/display/display.admin.inc
new file mode 100644
index 0000000..830d734
--- /dev/null
+++ b/core/modules/display/display.admin.inc
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * @file
+ * Administration functions for displays.
+ */
+
+use Drupal\layout\Plugin\Core\Entity\Display;
+
+/**
+ * Page callback: Presents list of displays.
+ *
+ * @see display_menu()
+ */
+function display_page_list() {
+  $controller = entity_list_controller('display');
+  return $controller->render();
+}
+
+/**
+ * Page callback: Presents the display editing form.
+ *
+ * @see display_menu()
+ */
+function display_page_edit(Display $display) {
+  drupal_set_title(t('<em>Edit layout</em> @label', array('@label' => $display->label())), PASS_THROUGH);
+  return entity_get_form($display);
+}
diff --git a/core/modules/display/display.info b/core/modules/display/display.info
new file mode 100644
index 0000000..a7350eb
--- /dev/null
+++ b/core/modules/display/display.info
@@ -0,0 +1,6 @@
+name = Display
+description = Populate layouts with blocks to form displays.
+package = Core
+version = VERSION
+core = 8.x
+dependencies[] = layout
diff --git a/core/modules/display/display.module b/core/modules/display/display.module
new file mode 100644
index 0000000..6264d30
--- /dev/null
+++ b/core/modules/display/display.module
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Manages populated displays.
+ */
+
+use Drupal\layout\Plugin\Core\Entity\Display;
+
+/**
+ * Implements hook_menu().
+ */
+function display_menu() {
+  $items['admin/structure/layouts'] = array(
+    'title' => 'Layouts',
+    'description' => 'Overview of the list of layouts available.',
+    'page callback' => 'display_page_list',
+    'access callback' => 'user_access',
+    'access arguments' => array('administer displays'),
+    'file' => 'display.admin.inc',
+  );
+  $items['admin/structure/layouts/manage/%display'] = array(
+    'title' => 'View layout',
+    'page callback' => 'display_page_edit',
+    'page arguments' => array(4),
+    'access callback' => 'user_access',
+    'access arguments' => array('administer displays'),
+    'file' => 'display.admin.inc',
+  );
+  return $items;
+}
+
+/**
+ * Implements hook_permission().
+ */
+function display_permission() {
+  return array(
+    'administer displays' => array(
+      'title' => t('Administer layouts'),
+      'description' => t('Access administration functions for layouts.'),
+    ),
+  );
+}
+
+/**
+ * Entity URI callback.
+ *
+ * @param \Drupal\layout\Plugin\Core\Entity\Display $display
+ *   Dispaly configuration entity instance.
+ *
+ * @return array
+ *   Entity URI information.
+ */
+function display_uri(Display $display) {
+  return array(
+    'path' => 'admin/structure/layouts/manage/' . $display->id(),
+  );
+}
+
+/**
+ * Load one display object by its identifier.
+ *
+ * @todo Remove once not needed for display_menu().
+ *
+ * @return \Drupal\layout\Plugin\Core\Entity\Display
+ *   Display configuration entity instance.
+ */
+function display_load($id) {
+  return entity_load('display', $id);
+}
+
+/**
+ * Implements hook_entity_info_alter().
+ *
+ * Add URI callback to Display config entities to support listing API.
+ */
+function display_entity_info_alter(&$entity_info) {
+  $entity_info['display']['uri_callback'] = 'display_uri';
+  $entity_info['display']['list_controller_class'] = 'Drupal\display\DisplayListController';
+  $entity_info['display']['form_controller_class']['default'] = 'Drupal\display\DisplayFormController';
+  $entity_info['display']['list_path'] = 'admin/structure/layouts';
+}
diff --git a/core/modules/display/lib/Drupal/display/DisplayFormController.php b/core/modules/display/lib/Drupal/display/DisplayFormController.php
new file mode 100644
index 0000000..2fe67f4
--- /dev/null
+++ b/core/modules/display/lib/Drupal/display/DisplayFormController.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\display\DisplayFormController.
+ */
+
+namespace Drupal\display;
+
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Entity\EntityFormController;
+use Drupal\layout\Plugin\Core\Entity\Display;
+
+/**
+ * Form controller for the display edit forms.
+ */
+class DisplayFormController extends EntityFormController {
+
+  /**
+   * Overrides Drupal\Core\Entity\EntityFormController::form().
+   */
+  public function form(array $form, array &$form_state, EntityInterface $display) {
+    // Get list of layouts and expose that for display layout selection.
+    $layouts = drupal_container()->get('plugin.manager.layout')->getDefinitions();
+    $layout_options = array();
+    foreach ($layouts as $key => $layout) {
+      $layout_options[$key] = $layout['title'];
+    }
+    $form['layout'] = array(
+      '#type' => 'select',
+      '#title' => t('Layout'),
+      '#default_value' => isset($display->layout) ? $display->layout : '',
+      '#options' => $layout_options,
+    );
+
+    return parent::form($form, $form_state, $display);
+  }
+
+  /**
+   * Overrides Drupal\Core\Entity\EntityFormController::actions().
+   */
+  protected function actions(array $form, array &$form_state) {
+    // Only includes a Save action for the entity, no direct Delete button.
+    return array(
+      'submit' => array(
+        '#value' => t('Save'),
+        '#validate' => array(
+          array($this, 'validate'),
+        ),
+        '#submit' => array(
+          array($this, 'submit'),
+          array($this, 'save'),
+        ),
+      ),
+    );
+  }
+
+  /**
+   * Overrides Drupal\Core\Entity\EntityFormController::save().
+   */
+  public function save(array $form, array &$form_state) {
+    $display = $this->getEntity($form_state);
+    $display->save();
+
+    watchdog('display', 'Layout @label saved.', array('@label' => $display->label()), WATCHDOG_NOTICE);
+    drupal_set_message(t('Layout %label saved.', array('%label' => $display->label())));
+
+    $form_state['redirect'] = 'admin/structure/layouts';
+  }
+
+}
+
diff --git a/core/modules/display/lib/Drupal/display/DisplayListController.php b/core/modules/display/lib/Drupal/display/DisplayListController.php
new file mode 100644
index 0000000..27f975b
--- /dev/null
+++ b/core/modules/display/lib/Drupal/display/DisplayListController.php
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\display\DisplayListController.
+ */
+
+namespace Drupal\display;
+
+use Drupal\Core\Config\Entity\ConfigEntityListController;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\layout\Plugin\Core\Entity\Display;
+
+/**
+ * Provides a listing of displays.
+ */
+class DisplayListController extends ConfigEntityListController {
+
+  /**
+   * Overrides Drupal\Core\Entity\EntityListController::getOperations().
+   *
+   * Only allow edit operation, not possible to delete.
+   */
+  public function getOperations(EntityInterface $entity) {
+    $uri = $entity->uri();
+    $operations['edit'] = array(
+      'title' => t('Edit'),
+      'href' => $uri['path'] . '/edit',
+      'options' => $uri['options'],
+      'weight' => 10,
+    );
+    return $operations;
+  }
+
+  /**
+   * Overrides Drupal\Core\Entity\EntityListController::buildHeader();
+   */
+  public function buildHeader() {
+    $row['label'] = t('Layout name');
+    $row['applied'] = t('Applied to');
+    $row['template'] = t('Template');
+    $row['operations'] = t('Operations');
+    return $row;
+  }
+
+  /**
+   * Overrides Drupal\Core\Entity\EntityListController::buildRow();
+   */
+  public function buildRow(EntityInterface $entity) {
+    $row['label'] = check_plain($entity->label());
+    // @todo: refer back to pages using this display.
+    $row['applied'] = $entity->id() == 'front_master' ? t('All front end pages (master)') : t('All admin pages (admin master)');
+    $layout = drupal_container()->get('plugin.manager.layout')->getDefinition($entity->layout);
+    $provider_info = system_get_info($layout['provider']['type'], $layout['provider']['provider']);
+    // Type can either be 'module' or 'theme'.
+    $provider_text = t('@name @type', array('@name' => $provider_info['name'], '@type' => t($layout['provider']['type'])));
+    $row['template'] = check_plain($layout['title'] . ' (' . $provider_text . ')');
+    $operations = $this->buildOperations($entity);
+    $row['operations']['data'] = $operations;
+    return $row;
+  }
+
+}
