diff --git a/core/includes/entity.api.php b/core/includes/entity.api.php
index 2219d40..9cec2b8 100644
--- a/core/includes/entity.api.php
+++ b/core/includes/entity.api.php
@@ -305,7 +305,7 @@ function hook_entity_query_alter(\Drupal\Core\Entity\Query\QueryInterface $query
  *
  * @param \Drupal\Core\Entity\EntityInterface $entity
  *   The entity object.
- * @param \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display
+ * @param \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display
  *   The entity_display object holding the display options configured for the
  *   entity components.
  * @param $view_mode
@@ -322,7 +322,7 @@ function hook_entity_query_alter(\Drupal\Core\Entity\Query\QueryInterface $query
  * @see hook_node_view()
  * @see hook_user_view()
  */
-function hook_entity_view(\Drupal\Core\Entity\EntityInterface $entity, \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display, $view_mode, $langcode) {
+function hook_entity_view(\Drupal\Core\Entity\EntityInterface $entity, \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display, $view_mode, $langcode) {
   // Only do the extra work if the component is configured to be displayed.
   // This assumes a 'mymodule_addition' extra field has been defined for the
   // entity bundle in hook_field_extra_fields().
@@ -351,7 +351,7 @@ function hook_entity_view(\Drupal\Core\Entity\EntityInterface $entity, \Drupal\e
  *   A renderable array representing the entity content.
  * @param Drupal\Core\Entity\EntityInterface $entity
  *   The entity object being rendered.
- * @param \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display
+ * @param \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display
  *   The entity_display object holding the display options configured for the
  *   entity components.
  *
@@ -361,7 +361,7 @@ function hook_entity_view(\Drupal\Core\Entity\EntityInterface $entity, \Drupal\e
  * @see hook_taxonomy_term_view_alter()
  * @see hook_user_view_alter()
  */
-function hook_entity_view_alter(&$build, Drupal\Core\Entity\EntityInterface $entity, \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display) {
+function hook_entity_view_alter(&$build, Drupal\Core\Entity\EntityInterface $entity, \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display) {
   if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {
     // Change its weight.
     $build['an_additional_field']['#weight'] = -10;
@@ -430,7 +430,7 @@ function hook_entity_view_mode_alter(&$view_mode, Drupal\Core\Entity\EntityInter
 /**
  * Alters the settings used for displaying an entity.
  *
- * @param \Drupal\entity\Plugin\Core\Entity\EntityDisplay $display
+ * @param \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display
  *   The entity_display object that will be used to display the entity
  *   components.
  * @param array $context
@@ -439,7 +439,7 @@ function hook_entity_view_mode_alter(&$view_mode, Drupal\Core\Entity\EntityInter
  *   - bundle: The bundle, e.g., 'page' or 'article'.
  *   - view_mode: The view mode, e.g. 'full', 'teaser'...
  */
-function hook_entity_display_alter(\Drupal\entity\Plugin\Core\Entity\EntityDisplay $display, array $context) {
+function hook_entity_display_alter(\Drupal\Core\Entity\Display\EntityViewDisplayInterface $display, array $context) {
   // Leave field labels out of the search index.
   if ($context['entity_type'] == 'node' && $context['view_mode'] == 'search_index') {
     foreach ($display->getComponents() as $name => $options) {
@@ -479,7 +479,7 @@ function hook_entity_prepare_form(\Drupal\Core\Entity\EntityInterface $entity, $
 /**
  * Alters the settings used for displaying an entity form.
  *
- * @param \Drupal\entity\Plugin\Core\Entity\EntityFormDisplay $form_display
+ * @param \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display
  *   The entity_form_display object that will be used to display the entity form
  *   components.
  * @param array $context
@@ -488,7 +488,7 @@ function hook_entity_prepare_form(\Drupal\Core\Entity\EntityInterface $entity, $
  *   - bundle: The bundle, e.g., 'page' or 'article'.
  *   - form_mode: The form mode, e.g. 'default', 'profile', 'register'...
  */
-function hook_entity_form_display_alter(\Drupal\entity\Plugin\Core\Entity\EntityFormDisplay $form_display, array $context) {
+function hook_entity_form_display_alter(\Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display, array $context) {
   // Hide the 'user_picture' field from the register form.
   if ($context['entity_type'] == 'user' && $context['form_mode'] == 'register') {
     $form_display->setComponent('user_picture', array(
diff --git a/core/lib/Drupal/Core/Entity/Display/EntityDisplayInterface.php b/core/lib/Drupal/Core/Entity/Display/EntityDisplayInterface.php
new file mode 100644
index 0000000..bc6e743
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/Display/EntityDisplayInterface.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Entity\Display\EntityDisplayInterface.
+ */
+
+namespace Drupal\Core\Entity\Display;
+
+/**
+ * Provides a common interface for entity displays.
+ */
+interface EntityDisplayInterface {
+
+  /**
+   * Creates a duplicate of the EntityDisplay object on a different view mode.
+   *
+   * The new object necessarily has the same $targetEntityType and $bundle
+   * properties than the original one.
+   *
+   * @param $view_mode
+   *   The view mode for the new object.
+   *
+   * @return \Drupal\entity\Plugin\Core\Entity\EntityDisplay
+   *   The new object.
+   */
+  public function createCopy($view_mode);
+
+  /**
+   * Gets the display options for all components.
+   *
+   * @return array
+   *   The array of display options, keyed by component name.
+   */
+  public function getComponents();
+
+  /**
+   * Gets the display options set for a component.
+   *
+   * @param string $name
+   *   The name of the component.
+   *
+   * @return array|null
+   *   The display options for the component, or NULL if the component is not
+   *   displayed.
+   */
+  public function getComponent($name);
+
+  /**
+   * Sets the display options for a component.
+   *
+   * @param string $name
+   *   The name of the component.
+   * @param array $options
+   *   The display options.
+   *
+   * @return \Drupal\entity\Plugin\Core\Entity\EntityDisplay
+   *   The EntityDisplay object.
+   */
+  public function setComponent($name, array $options = array());
+
+  /**
+   * Sets a component to be hidden.
+   *
+   * @param string $name
+   *   The name of the component.
+   *
+   * @return \Drupal\entity\Plugin\Core\Entity\EntityDisplay
+   *   The EntityDisplay object.
+   */
+  public function removeComponent($name);
+
+  /**
+   * Returns the highest weight of the components in the display.
+   *
+   * @return int|null
+   *   The highest weight of the components in the display, or NULL if the
+   *   display is empty.
+   */
+  public function getHighestWeight();
+
+  /**
+   * Returns the renderer plugin for a field (e.g. widget, formatter).
+   *
+   * @param string $field_name
+   *   The field name.
+   *
+   * @return \Drupal\field\Plugin\PluginSettingsInterface|null
+   *   A widget or formatter plugin or NULL if the field does not exist.
+   */
+  public function getRenderer($field_name);
+
+}
diff --git a/core/lib/Drupal/Core/Entity/Display/EntityFormDisplayInterface.php b/core/lib/Drupal/Core/Entity/Display/EntityFormDisplayInterface.php
new file mode 100644
index 0000000..1929d9a
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/Display/EntityFormDisplayInterface.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Entity\Display\EntityFormDisplayInterface.
+ */
+
+namespace Drupal\Core\Entity\Display;
+
+/**
+ * Provides a common interface for entity form displays.
+ */
+interface EntityFormDisplayInterface extends EntityDisplayInterface {
+
+}
diff --git a/core/lib/Drupal/Core/Entity/Display/EntityViewDisplayInterface.php b/core/lib/Drupal/Core/Entity/Display/EntityViewDisplayInterface.php
new file mode 100644
index 0000000..8a9ce80
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/Display/EntityViewDisplayInterface.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Entity\Display\EntityViewDisplayInterface.
+ */
+
+namespace Drupal\Core\Entity\Display;
+
+/**
+ * Provides a common interface for entity view displays.
+ */
+interface EntityViewDisplayInterface extends EntityDisplayInterface {
+
+}
diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
index 99008e2..1575d96 100644
--- a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
+++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
@@ -8,12 +8,13 @@
 namespace Drupal\entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
+use Drupal\Core\Entity\Display\EntityDisplayInterface;
 
 /**
  * Base class for config entity types that store configuration for entity forms
  * and displays.
  */
-abstract class EntityDisplayBase extends ConfigEntityBase implements EntityDisplayBaseInterface {
+abstract class EntityDisplayBase extends ConfigEntityBase implements EntityDisplayInterface {
 
   /**
    * Unique ID for the config entity.
diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayBaseInterface.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayBaseInterface.php
deleted file mode 100644
index 06647e7..0000000
--- a/core/modules/entity/lib/Drupal/entity/EntityDisplayBaseInterface.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\entity\EntityDisplayBaseInterface.
- */
-
-namespace Drupal\entity;
-
-use Drupal\Core\Config\Entity\ConfigEntityInterface;
-
-/**
- * Provides an interface defining an entity display entity.
- */
-interface EntityDisplayBaseInterface extends ConfigEntityInterface {
-
-  /**
-   * Creates a duplicate of the EntityDisplay object on a different view mode.
-   *
-   * The new object necessarily has the same $targetEntityType and $bundle
-   * properties than the original one.
-   *
-   * @param $view_mode
-   *   The view mode for the new object.
-   *
-   * @return \Drupal\entity\Plugin\Core\Entity\EntityDisplay
-   *   The new object.
-   */
-  public function createCopy($view_mode);
-
-  /**
-   * Gets the display options for all components.
-   *
-   * @return array
-   *   The array of display options, keyed by component name.
-   */
-  public function getComponents();
-
-  /**
-   * Gets the display options set for a component.
-   *
-   * @param string $name
-   *   The name of the component.
-   *
-   * @return array|null
-   *   The display options for the component, or NULL if the component is not
-   *   displayed.
-   */
-  public function getComponent($name);
-
-  /**
-   * Sets the display options for a component.
-   *
-   * @param string $name
-   *   The name of the component.
-   * @param array $options
-   *   The display options.
-   *
-   * @return \Drupal\entity\Plugin\Core\Entity\EntityDisplay
-   *   The EntityDisplay object.
-   */
-  public function setComponent($name, array $options = array());
-
-  /**
-   * Sets a component to be hidden.
-   *
-   * @param string $name
-   *   The name of the component.
-   *
-   * @return \Drupal\entity\Plugin\Core\Entity\EntityDisplay
-   *   The EntityDisplay object.
-   */
-  public function removeComponent($name);
-
-  /**
-   * Returns the highest weight of the components in the display.
-   *
-   * @return int|null
-   *   The highest weight of the components in the display, or NULL if the
-   *   display is empty.
-   */
-  public function getHighestWeight();
-
-  /**
-   * Returns the renderer plugin for a field (e.g. widget, formatter).
-   *
-   * @param string $field_name
-   *   The field name.
-   *
-   * @return \Drupal\field\Plugin\PluginSettingsInterface|null
-   *   A widget or formatter plugin or NULL if the field does not exist.
-   */
-  public function getRenderer($field_name);
-
-}
diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayInterface.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayInterface.php
index 08d49c0..3678cc7 100644
--- a/core/modules/entity/lib/Drupal/entity/EntityDisplayInterface.php
+++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayInterface.php
@@ -7,11 +7,12 @@
 
 namespace Drupal\entity;
 
-use Drupal\entity\EntityDisplayBaseInterface;
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
 
 /**
- * Provides an interface defining an entity display entity.
+ * Provides an interface for the entity display config entity.
  */
-interface EntityDisplayInterface extends EntityDisplayBaseInterface {
+interface EntityDisplayInterface extends EntityViewDisplayInterface, ConfigEntityInterface {
 
 }
diff --git a/core/modules/entity/lib/Drupal/entity/EntityFormDisplayInterface.php b/core/modules/entity/lib/Drupal/entity/EntityFormDisplayInterface.php
index 7f6e61a..e611c34 100644
--- a/core/modules/entity/lib/Drupal/entity/EntityFormDisplayInterface.php
+++ b/core/modules/entity/lib/Drupal/entity/EntityFormDisplayInterface.php
@@ -7,11 +7,12 @@
 
 namespace Drupal\entity;
 
-use Drupal\entity\EntityDisplayBaseInterface;
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+use Drupal\Core\Entity\Display\EntityFormDisplayInterface as CoreEntityFormDisplayInterface;
 
 /**
  * Provides an interface defining an entity display entity.
  */
-interface EntityFormDisplayInterface extends EntityDisplayBaseInterface {
+interface EntityFormDisplayInterface extends CoreEntityFormDisplayInterface, ConfigEntityInterface {
 
 }
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php
index 841c056..a31ccae 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php
@@ -9,7 +9,7 @@
 
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Controller\ControllerInterface;
-use Drupal\entity\EntityDisplayBaseInterface;
+use Drupal\Core\Entity\Display\EntityDisplayInterface;
 use Drupal\field\FieldInstanceInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -38,7 +38,7 @@ public function getFormID() {
   /**
    * {@inheritdoc}
    */
-  protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) {
+  protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayInterface $entity_display, array $form, array &$form_state) {
     $field_row = parent::buildFieldRow($field_id, $instance, $entity_display, $form, $form_state);
     $display_options = $entity_display->getComponent($field_id);
 
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
index 5a45c21..5a1f36c 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
@@ -8,8 +8,8 @@
 namespace Drupal\field_ui;
 
 use Drupal\Component\Plugin\PluginManagerBase;
+use Drupal\Core\Entity\Display\EntityDisplayInterface;
 use Drupal\Core\Entity\EntityManager;
-use Drupal\entity\EntityDisplayBaseInterface;
 use Drupal\field\FieldInstanceInterface;
 use Drupal\field_ui\OverviewBase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -203,7 +203,7 @@ public function buildForm(array $form, array &$form_state, $entity_type = NULL,
    * @return array
    *   A table row array.
    */
-  protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) {
+  protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayInterface $entity_display, array $form, array &$form_state) {
     $field = $instance->getField();
     $display_options = $entity_display->getComponent($field_id);
 
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/FormDisplayOverview.php b/core/modules/field_ui/lib/Drupal/field_ui/FormDisplayOverview.php
index d2ab86a..ddf8272 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/FormDisplayOverview.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/FormDisplayOverview.php
@@ -9,7 +9,7 @@
 
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Controller\ControllerInterface;
-use Drupal\entity\EntityDisplayBaseInterface;
+use Drupal\Core\Entity\Display\EntityDisplayInterface;
 use Drupal\field\FieldInstanceInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -38,7 +38,7 @@ public function getFormID() {
   /**
    * {@inheritdoc}
    */
-  protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayBaseInterface $entity_display, array $form, array &$form_state) {
+  protected function buildFieldRow($field_id, FieldInstanceInterface $instance, EntityDisplayInterface $entity_display, array $form, array &$form_state) {
     $field_row = parent::buildFieldRow($field_id, $instance, $entity_display, $form, $form_state);
 
     // Update the (invisible) title of the 'plugin' column.
