diff --git a/core/modules/aggregator/lib/Drupal/aggregator/FeedInterface.php b/core/modules/aggregator/lib/Drupal/aggregator/FeedInterface.php
new file mode 100644
index 0000000..25e5128
--- /dev/null
+++ b/core/modules/aggregator/lib/Drupal/aggregator/FeedInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\aggregator\Plugin\Core\Entity\FeedInterface.
+ */
+
+namespace Drupal\aggregator;
+
+use Drupal\Core\Entity\ContentEntityInterface;
+
+/**
+ * @todo.
+ */
+interface FeedInterface extends ContentEntityInterface {
+
+}
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/ItemInterface.php b/core/modules/aggregator/lib/Drupal/aggregator/ItemInterface.php
new file mode 100644
index 0000000..29a94bf
--- /dev/null
+++ b/core/modules/aggregator/lib/Drupal/aggregator/ItemInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\aggregator\Plugin\Core\Entity\ItemInterface.
+ */
+
+namespace Drupal\aggregator;
+
+use Drupal\Core\Entity\ContentEntityInterface;
+
+/**
+ * @todo.
+ */
+interface ItemInterface extends ContentEntityInterface {
+
+}
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
index 2c3cc20..b2d6291 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Feed.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\aggregator\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\aggregator\FeedInterface;
 
 /**
  * Defines the aggregator feed entity class.
@@ -32,7 +32,7 @@
  *   }
  * )
  */
-class Feed extends EntityNG implements ContentEntityInterface {
+class Feed extends EntityNG implements FeedInterface {
 
   /**
    * The feed ID.
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Item.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Item.php
index 4d19a75..da00bd8 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Item.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/Core/Entity/Item.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\aggregator\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\aggregator\ItemInterface;
 
 /**
  * Defines the aggregator item entity class.
@@ -29,7 +29,7 @@
  *   }
  * )
  */
-class Item extends EntityNG implements ContentEntityInterface {
+class Item extends EntityNG implements ItemInterface {
 
   /**
    * The feed item ID.
diff --git a/core/modules/block/block.api.php b/core/modules/block/block.api.php
index c9b3b1f..b3c02b9 100644
--- a/core/modules/block/block.api.php
+++ b/core/modules/block/block.api.php
@@ -23,7 +23,7 @@
  *   A renderable array of data, as returned from the build() implementation of
  *   the plugin that defined the block:
  *   - #title: The default localized title of the block.
- * @param \Drupal\block\BlockInterface $block
+ * @param \Drupal\block\BlockPluginInterface $block
  *   The block instance.
  *
  * @see hook_block_view_ID_alter()
@@ -51,7 +51,7 @@ function hook_block_view_alter(array &$build, \Drupal\block\Plugin\Core\Entity\B
  *   A renderable array of data, as returned from the build() implementation of
  *   the plugin that defined the block:
  *   - #title: The default localized title of the block.
- * @param \Drupal\block\BlockInterface $block
+ * @param \Drupal\block\BlockPluginInterface $block
  *   The block instance.
  *
  * @todo Add a more specific example of a block ID, and illustrate how this is
@@ -60,7 +60,7 @@ function hook_block_view_alter(array &$build, \Drupal\block\Plugin\Core\Entity\B
  * @see hook_block_view_alter()
  * @see hook_block_view_NAME_alter()
  */
-function hook_block_view_ID_alter(array &$build, \Drupal\block\BlockInterface $block) {
+function hook_block_view_ID_alter(array &$build, \Drupal\block\BlockPluginInterface $block) {
   // This code will only run for a specific block. For example, if ID
   // in the function definition above is set to "someid", the code
   // will only run on the "someid" block.
@@ -79,7 +79,7 @@ function hook_block_view_ID_alter(array &$build, \Drupal\block\BlockInterface $b
  *   A renderable array of data, as returned from the build() implementation of
  *   the plugin that defined the block:
  *   - #title: The default localized title of the block.
- * @param \Drupal\block\BlockInterface $block
+ * @param \Drupal\block\BlockPluginInterface $block
  *   The block instance.
  *
  * @todo NAME is ambiguous, and so is the example here. Use a more specific
@@ -89,7 +89,7 @@ function hook_block_view_ID_alter(array &$build, \Drupal\block\BlockInterface $b
  * @see hook_block_view_alter()
  * @see hook_block_view_ID_alter()
  */
-function hook_block_view_NAME_alter(array &$build, \Drupal\block\BlockInterface $block) {
+function hook_block_view_NAME_alter(array &$build, \Drupal\block\BlockPluginInterface $block) {
   // This code will only run for a specific block instance. For example, if NAME
   // in the function definition above is set to "someid", the code will only run
   // on the "someid" block.
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockInterface.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockInterface.php
new file mode 100644
index 0000000..1006ef5
--- /dev/null
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockInterface.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\custom_block\Plugin\Core\Entity\CustomBlockInterface.
+ */
+
+namespace Drupal\custom_block;
+
+use Drupal\Core\Entity\ContentEntityInterface;
+
+/**
+ * @todo.
+ */
+interface CustomBlockInterface extends ContentEntityInterface {
+
+  /**
+   * Sets the theme value.
+   *
+   * When creating a new custom block from the block library, the user is
+   * redirected to the configure form for that block in the given theme. The
+   * theme is stored against the block when the custom block add form is shown.
+   *
+   * @param string $theme
+   *   The theme name.
+   */
+  public function setTheme($theme);
+
+  /**
+   * Gets the theme value.
+   *
+   * When creating a new custom block from the block library, the user is
+   * redirected to the configure form for that block in the given theme. The
+   * theme is stored against the block when the custom block add form is shown.
+   *
+   * @return string
+   *   The theme name.
+   */
+  public function getTheme();
+
+}
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeInterface.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeInterface.php
new file mode 100644
index 0000000..6855785
--- /dev/null
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\custom_block\Plugin\Core\Entity\CustomBlockTypeInterface.
+ */
+
+namespace Drupal\custom_block;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface CustomBlockTypeInterface extends ConfigEntityInterface {
+
+}
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php
index d0ea6ee..3cd9c16 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlock.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\custom_block\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\custom_block\CustomBlockInterface;
 
 /**
  * Defines the custom block entity class.
@@ -44,7 +44,7 @@
  *   }
  * )
  */
-class CustomBlock extends EntityNG implements ContentEntityInterface {
+class CustomBlock extends EntityNG implements CustomBlockInterface {
 
   /**
    * The block ID.
@@ -149,28 +149,14 @@ public function getRevisionId() {
   }
 
   /**
-   * Sets the theme value.
-   *
-   * When creating a new custom block from the block library, the user is
-   * redirected to the configure form for that block in the given theme. The
-   * theme is stored against the block when the custom block add form is shown.
-   *
-   * @param string $theme
-   *   The theme name.
+   * {@inheritdoc}
    */
   public function setTheme($theme) {
     $this->theme = $theme;
   }
 
   /**
-   * Gets the theme value.
-   *
-   * When creating a new custom block from the block library, the user is
-   * redirected to the configure form for that block in the given theme. The
-   * theme is stored against the block when the custom block add form is shown.
-   *
-   * @return string
-   *   The theme name.
+   * {@inheritdoc}
    */
   public function getTheme() {
     return $this->theme;
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlockType.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlockType.php
index 991fbc5..a401925 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlockType.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Plugin/Core/Entity/CustomBlockType.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\custom_block\CustomBlockTypeInterface;
 
 /**
  * Defines the custom block type entity.
@@ -31,7 +32,7 @@
  *   }
  * )
  */
-class CustomBlockType extends ConfigEntityBase {
+class CustomBlockType extends ConfigEntityBase implements CustomBlockTypeInterface {
 
   /**
    * The custom block type ID.
diff --git a/core/modules/block/lib/Drupal/block/BlockBase.php b/core/modules/block/lib/Drupal/block/BlockBase.php
index 4de2a59..b22e207 100644
--- a/core/modules/block/lib/Drupal/block/BlockBase.php
+++ b/core/modules/block/lib/Drupal/block/BlockBase.php
@@ -18,7 +18,7 @@
  * block settings, and handling for general user-defined block visibility
  * settings.
  */
-abstract class BlockBase extends PluginBase implements BlockInterface {
+abstract class BlockBase extends PluginBase implements BlockPluginInterface {
 
   /**
    * The entity using this plugin.
@@ -118,7 +118,7 @@ public function blockAccess() {
   }
 
   /**
-   * Implements \Drupal\block\BlockInterface::access().
+   * Implements \Drupal\block\BlockPluginInterface::access().
    *
    * Adds the user-configured per-role, per-path, and per-language visibility
    * settings to all blocks, and invokes hook_block_access().
@@ -212,7 +212,7 @@ public function access() {
   }
 
   /**
-   * Implements \Drupal\block\BlockInterface::form().
+   * Implements \Drupal\block\BlockPluginInterface::form().
    *
    * Creates a generic configuration form for all block types. Individual
    * block plugins can add elements to this form by overriding
@@ -419,7 +419,7 @@ public function blockForm($form, &$form_state) {
   }
 
   /**
-   * Implements \Drupal\block\BlockInterface::validate().
+   * Implements \Drupal\block\BlockPluginInterface::validate().
    *
    * Most block plugins should not override this method. To add validation
    * for a specific block type, override BlockBase::blockValdiate().
@@ -459,7 +459,7 @@ public function validate($form, &$form_state) {
   public function blockValidate($form, &$form_state) {}
 
   /**
-   * Implements \Drupal\block\BlockInterface::submit().
+   * Implements \Drupal\block\BlockPluginInterface::submit().
    *
    * Most block plugins should not override this method. To add submission
    * handling for a specific block type, override BlockBase::blockSubmit().
diff --git a/core/modules/block/lib/Drupal/block/BlockInterface.php b/core/modules/block/lib/Drupal/block/BlockInterface.php
index 65bdee3..cb57f56 100644
--- a/core/modules/block/lib/Drupal/block/BlockInterface.php
+++ b/core/modules/block/lib/Drupal/block/BlockInterface.php
@@ -2,104 +2,24 @@
 
 /**
  * @file
- * Contains \Drupal\block\BlockInterface.
+ * Contains \Drupal\block\Plugin\Core\Entity\BlockInterface.
  */
 
 namespace Drupal\block;
 
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
 /**
- * Defines the required interface for all block plugins.
- *
- * @todo Add detailed documentation here explaining the block system's
- *   architecture and the relationships between the various objects, including
- *   brif references to the important components that are not coupled to the
- *   interface.
- *
- * @see \Drupal\block\BlockBase
+ * @todo.
  */
-interface BlockInterface {
-
-  /**
-   * Returns the default settings for this block plugin.
-   *
-   * @return array
-   *   An associative array of block settings for this block, keyed by the
-   *   setting name.
-   *
-   * @todo Consider merging this with the general plugin configuration member
-   *   variable and its getter/setter in http://drupal.org/node/1764380.
-   */
-  public function settings();
-
-  /**
-   * Indicates whether the block should be shown.
-   *
-   * This method allows base implementations to add general access restrictions
-   * that should apply to all extending block plugins.
-   *
-   * @return bool
-   *   TRUE if the block should be shown, or FALSE otherwise.
-   *
-   * @see \Drupal\block\BlockAccessController
-   */
-  public function access();
-
-  /**
-   * Constructs the block configuration form.
-   *
-   * This method allows base implementations to add a generic configuration
-   * form for extending block plugins.
-   *
-   * @param array $form
-   *   The form definition array for the block configuration form.
-   * @param array $form_state
-   *   An array containing the current state of the configuration form.
-   *
-   * @return array $form
-   *   The renderable form array representing the entire configuration form.
-   *
-   * @see \Drupal\block\BlockFormController::form()
-   * @see \Drupal\block\BlockInterace::validate()
-   * @see \Drupal\block\BlockInterace::submit()
-   */
-  public function form($form, &$form_state);
+interface BlockInterface extends ConfigEntityInterface {
 
   /**
-   * Handles form validation for the block configuration form.
-   *
-   * @param array $form
-   *   The form definition array for the block configuration form.
-   * @param array $form_state
-   *   An array containing the current state of the configuration form.
-   *
-   * @see \Drupal\block\BlockFormController::validate()
-   * @see \Drupal\block\BlockInterace::form()
-   * @see \Drupal\block\BlockInterace::submit()
-   */
-  public function validate($form, &$form_state);
-
-  /**
-   * Handles form submissions for the block configuration form.
-   *
-   * @param array $form
-   *   The form definition array for the block configuration form.
-   * @param array $form_state
-   *   An array containing the current state of the configuration form.
-   *
-   * @see \Drupal\block\BlockFormController::submit()
-   * @see \Drupal\block\BlockInterace::form()
-   * @see \Drupal\block\BlockInterace::validate()
-   */
-  public function submit($form, &$form_state);
-
-  /**
-   * Builds and returns the renderable array for this block plugin.
-   *
-   * @return array
-   *   A renderable array representing the content of the block.
+   * Returns the plugin instance.
    *
-   * @see \Drupal\block\BlockRenderController
+   * @return \Drupal\block\BlockPluginInterface
+   *   The plugin instance for this block.
    */
-  public function build();
+  public function getPlugin();
 
 }
diff --git a/core/modules/block/lib/Drupal/block/BlockInterface.php b/core/modules/block/lib/Drupal/block/BlockPluginInterface.php
similarity index 97%
copy from core/modules/block/lib/Drupal/block/BlockInterface.php
copy to core/modules/block/lib/Drupal/block/BlockPluginInterface.php
index 65bdee3..1887816 100644
--- a/core/modules/block/lib/Drupal/block/BlockInterface.php
+++ b/core/modules/block/lib/Drupal/block/BlockPluginInterface.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\block\BlockInterface.
+ * Contains \Drupal\block\BlockPluginInterface.
  */
 
 namespace Drupal\block;
@@ -17,7 +17,7 @@
  *
  * @see \Drupal\block\BlockBase
  */
-interface BlockInterface {
+interface BlockPluginInterface {
 
   /**
    * Returns the default settings for this block plugin.
diff --git a/core/modules/block/lib/Drupal/block/Plugin/Core/Entity/Block.php b/core/modules/block/lib/Drupal/block/Plugin/Core/Entity/Block.php
index 077a81e..f19b485 100644
--- a/core/modules/block/lib/Drupal/block/Plugin/Core/Entity/Block.php
+++ b/core/modules/block/lib/Drupal/block/Plugin/Core/Entity/Block.php
@@ -11,6 +11,7 @@
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Component\Plugin\Exception\PluginException;
+use Drupal\block\BlockInterface;
 
 /**
  * Defines a Block configuration entity class.
@@ -36,7 +37,7 @@
  *   }
  * )
  */
-class Block extends ConfigEntityBase {
+class Block extends ConfigEntityBase implements BlockInterface {
 
   /**
    * The ID of the block.
@@ -80,7 +81,7 @@ class Block extends ConfigEntityBase {
   /**
    * The plugin instance.
    *
-   * @var \Drupal\block\BlockInterface
+   * @var \Drupal\block\BlockPluginInterface
    */
   protected $instance;
 
@@ -120,10 +121,7 @@ class Block extends ConfigEntityBase {
   protected $plugin;
 
   /**
-   * Returns the plugin instance.
-   *
-   * @return \Drupal\block\BlockInterface
-   *   The plugin instance for this block.
+   * {@inheritdoc}
    */
   public function getPlugin() {
     if (!$this->instance) {
diff --git a/core/modules/block/lib/Drupal/block/Plugin/Type/BlockManager.php b/core/modules/block/lib/Drupal/block/Plugin/Type/BlockManager.php
index b102d4b..97a0d44 100644
--- a/core/modules/block/lib/Drupal/block/Plugin/Type/BlockManager.php
+++ b/core/modules/block/lib/Drupal/block/Plugin/Type/BlockManager.php
@@ -20,7 +20,7 @@
  *
  * @todo Add documentation to this class.
  *
- * @see \Drupal\block\BlockInterface
+ * @see \Drupal\block\BlockPluginInterface
  */
 class BlockManager extends PluginManagerBase {
 
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/BreakpointGroupInterface.php b/core/modules/breakpoint/lib/Drupal/breakpoint/BreakpointGroupInterface.php
new file mode 100644
index 0000000..e7e562a
--- /dev/null
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/BreakpointGroupInterface.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroupInterface.
+ */
+
+namespace Drupal\breakpoint;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface BreakpointGroupInterface extends ConfigEntityInterface {
+
+  /**
+   * Checks if the breakpoint group is valid.
+   *
+   * @throws \Drupal\breakpoint\InvalidBreakpointSourceTypeException
+   * @throws \Drupal\breakpoint\InvalidBreakpointSourceException
+   *
+   * @return bool
+   *   Returns TRUE if the breakpoint group is valid.
+   */
+  public function isValid();
+
+  /**
+   * Adds a breakpoint using a name and a media query.
+   *
+   * @param string $name
+   *   The name of the breakpoint.
+   * @param string $media_query
+   *   Media query.
+   */
+  public function addBreakpointFromMediaQuery($name, $media_query);
+
+  /**
+   * Adds one or more breakpoints to this group.
+   *
+   * The breakpoint name is either the machine_name or the ID of a breakpoint.
+   *
+   * @param array $breakpoints
+   *   Array containing breakpoints keyed by their ID.
+   */
+  public function addBreakpoints($breakpoints);
+
+}
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/BreakpointInterface.php b/core/modules/breakpoint/lib/Drupal/breakpoint/BreakpointInterface.php
new file mode 100644
index 0000000..0c3935a
--- /dev/null
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/BreakpointInterface.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\breakpoint\Plugin\Core\Entity\BreakpointInterface.
+ */
+
+namespace Drupal\breakpoint;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface BreakpointInterface extends ConfigEntityInterface {
+
+  /**
+   * Checks if the breakpoint is valid.
+   *
+   * @throws \Drupal\breakpoint\InvalidBreakpointSourceTypeException
+   * @throws \Drupal\breakpoint\InvalidBreakpointSourceException
+   * @throws \Drupal\breakpoint\InvalidBreakpointNameException
+   * @throws \Drupal\breakpoint\InvalidBreakpointMediaQueryException
+   *
+   * @see isValidMediaQuery()
+   */
+  public function isValid();
+
+  /**
+   * Checks if a mediaQuery is valid.
+   *
+   * @throws \Drupal\breakpoint\InvalidBreakpointMediaQueryException
+   *
+   * @return bool
+   *   Returns TRUE if the media query is valid.
+   *
+   * @see http://www.w3.org/TR/css3-mediaqueries/
+   * @see http://www.w3.org/Style/CSS/Test/MediaQueries/20120229/reports/implement-report.html
+   * @see https://github.com/adobe/webkit/blob/master/Source/WebCore/css/
+   */
+  public static function isValidMediaQuery($media_query);
+
+}
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php
index c2dff01..71024e5 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php
@@ -8,6 +8,7 @@
 namespace Drupal\breakpoint\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
+use Drupal\breakpoint\BreakpointInterface;
 use Drupal\breakpoint\InvalidBreakpointException;
 use Drupal\breakpoint\InvalidBreakpointNameException;
 use Drupal\breakpoint\InvalidBreakpointSourceException;
@@ -32,7 +33,7 @@
  *   }
  * )
  */
-class Breakpoint extends ConfigEntityBase {
+class Breakpoint extends ConfigEntityBase implements BreakpointInterface {
 
   /**
    * Denotes that a breakpoint or breakpoint group is defined by a theme.
@@ -149,14 +150,7 @@ public function save() {
   }
 
   /**
-   * Checks if the breakpoint is valid.
-   *
-   * @throws Drupal\breakpoint\InvalidBreakpointSourceTypeException
-   * @throws Drupal\breakpoint\InvalidBreakpointSourceException
-   * @throws Drupal\breakpoint\InvalidBreakpointNameException
-   * @throws Drupal\breakpoint\InvalidBreakpointMediaQueryException
-   *
-   * @see isValidMediaQuery()
+   * {@inheritdoc}
    */
   public function isValid() {
     // Check for illegal values in breakpoint source type.
@@ -181,16 +175,7 @@ public function isValid() {
   }
 
   /**
-   * Checks if a mediaQuery is valid.
-   *
-   * @throws Drupal\breakpoint\InvalidBreakpointMediaQueryException
-   *
-   * @return true
-   *   Returns true if the media query is valid.
-   *
-   * @see http://www.w3.org/TR/css3-mediaqueries/
-   * @see http://www.w3.org/Style/CSS/Test/MediaQueries/20120229/reports/implement-report.html
-   * @see https://github.com/adobe/webkit/blob/master/Source/WebCore/css/
+   * {@inheritdoc}
    */
   public static function isValidMediaQuery($media_query) {
     // Array describing all known media features and the expected value type or
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php
index 334d2cb..a7ed3ad 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php
@@ -8,6 +8,7 @@
 namespace Drupal\breakpoint\Plugin\Core\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
+use Drupal\breakpoint\BreakpointGroupInterface;
 use Drupal\breakpoint\InvalidBreakpointSourceException;
 use Drupal\breakpoint\InvalidBreakpointSourceTypeException;
 use Drupal\Component\Annotation\Plugin;
@@ -29,7 +30,7 @@
  *   }
  * )
  */
-class BreakpointGroup extends ConfigEntityBase {
+class BreakpointGroup extends ConfigEntityBase implements BreakpointGroupInterface {
 
   /**
    * The breakpoint group ID.
@@ -116,13 +117,7 @@ public function save() {
   }
 
   /**
-   * Checks if the breakpoint group is valid.
-   *
-   * @throws Drupal\breakpoint\InvalidBreakpointSourceTypeException
-   * @throws Drupal\breakpoint\InvalidBreakpointSourceException
-   *
-   * @return true
-   *   Returns true if the breakpoint group is valid.
+   * {@inheritdoc}
    */
   public function isValid() {
     // Check for illegal values in breakpoint group source type.
@@ -147,12 +142,7 @@ public function isValid() {
   }
 
   /**
-   * Adds a breakpoint using a name and a media query.
-   *
-   * @param string $name
-   *   The name of the breakpoint.
-   * @param string $media_query
-   *   Media query.
+   * {@inheritdoc}
    */
   public function addBreakpointFromMediaQuery($name, $media_query) {
     // Use the existing breakpoint if it exists.
@@ -173,12 +163,7 @@ public function addBreakpointFromMediaQuery($name, $media_query) {
   }
 
   /**
-   * Adds one or more breakpoints to this group.
-   *
-   * The breakpoint name is either the machine_name or the id of a breakpoint.
-   *
-   * @param array $breakpoints
-   *   Array containing breakpoints keyed by their id.
+   * {@inheritdoc}
    */
   public function addBreakpoints($breakpoints) {
     foreach ($breakpoints as $breakpoint_name) {
@@ -212,4 +197,5 @@ protected function loadAllBreakpoints() {
       }
     }
   }
+
 }
diff --git a/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/editor/editor/CKEditor.php b/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/editor/editor/CKEditor.php
index 37a843e..55bafbf 100644
--- a/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/editor/editor/CKEditor.php
+++ b/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/editor/editor/CKEditor.php
@@ -25,7 +25,7 @@
 class CKEditor extends EditorBase {
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::getDefaultSettings().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::getDefaultSettings().
    */
   public function getDefaultSettings() {
     return array(
@@ -45,7 +45,7 @@ public function getDefaultSettings() {
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::settingsForm().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::settingsForm().
    */
   public function settingsForm(array $form, array &$form_state, Editor $editor) {
     $module_path = drupal_get_path('module', 'ckeditor');
@@ -87,7 +87,7 @@ public function settingsForm(array $form, array &$form_state, Editor $editor) {
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::settingsFormSubmit().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::settingsFormSubmit().
    */
   public function settingsFormSubmit(array $form, array &$form_state) {
     // Modify the toolbar settings by reference. The values in
@@ -104,7 +104,7 @@ public function settingsFormSubmit(array $form, array &$form_state) {
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::getJSSettings().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::getJSSettings().
    */
   public function getJSSettings(Editor $editor) {
     $language_interface = language(LANGUAGE_TYPE_INTERFACE);
@@ -143,7 +143,7 @@ public function getJSSettings(Editor $editor) {
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::getLibraries().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::getLibraries().
    */
   public function getLibraries(Editor $editor) {
     return array(
diff --git a/core/modules/comment/lib/Drupal/comment/CommentInterface.php b/core/modules/comment/lib/Drupal/comment/CommentInterface.php
new file mode 100644
index 0000000..3aef0a1
--- /dev/null
+++ b/core/modules/comment/lib/Drupal/comment/CommentInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\comment\Plugin\Core\Entity\CommentInterface.
+ */
+
+namespace Drupal\comment;
+
+use Drupal\Core\Entity\ContentEntityInterface;
+
+/**
+ * @todo.
+ */
+interface CommentInterface extends ContentEntityInterface {
+
+}
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
index f6e9091..917fde9 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\comment\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\comment\CommentInterface;
 
 /**
  * Defines the comment entity class.
@@ -39,7 +39,7 @@
  *   }
  * )
  */
-class Comment extends EntityNG implements ContentEntityInterface {
+class Comment extends EntityNG implements CommentInterface {
 
   /**
    * The comment ID.
diff --git a/core/modules/contact/lib/Drupal/contact/CategoryInterface.php b/core/modules/contact/lib/Drupal/contact/CategoryInterface.php
new file mode 100644
index 0000000..5d99b0e
--- /dev/null
+++ b/core/modules/contact/lib/Drupal/contact/CategoryInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\contact\Plugin\Core\Entity\CategoryInterface.
+ */
+
+namespace Drupal\contact;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface CategoryInterface extends ConfigEntityInterface {
+
+}
diff --git a/core/modules/contact/lib/Drupal/contact/MessageInterface.php b/core/modules/contact/lib/Drupal/contact/MessageInterface.php
new file mode 100644
index 0000000..ea58821
--- /dev/null
+++ b/core/modules/contact/lib/Drupal/contact/MessageInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\contact\Plugin\Core\Entity\MessageInterface.
+ */
+
+namespace Drupal\contact;
+
+use Drupal\Core\Entity\EntityInterface;
+
+/**
+ * @todo.
+ */
+interface MessageInterface extends EntityInterface {
+
+}
diff --git a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php b/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php
index f01c2f5..a21213e 100644
--- a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php
+++ b/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\contact\CategoryInterface;
 
 /**
  * Defines the contact category entity.
@@ -32,7 +33,7 @@
  *   }
  * )
  */
-class Category extends ConfigEntityBase {
+class Category extends ConfigEntityBase implements CategoryInterface {
 
   /**
    * The category ID.
diff --git a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Message.php b/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Message.php
index 19901b2..239f9b9 100644
--- a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Message.php
+++ b/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Message.php
@@ -10,6 +10,7 @@
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Core\Entity\Entity;
+use Drupal\contact\MessageInterface;
 
 /**
  * Defines the contact message entity.
@@ -31,7 +32,7 @@
  *   }
  * )
  */
-class Message extends Entity {
+class Message extends Entity implements MessageInterface {
 
   /**
    * The contact category ID of this message.
diff --git a/core/modules/edit/lib/Drupal/edit/EditorInterface.php b/core/modules/edit/lib/Drupal/edit/EditPluginInterface.php
similarity index 93%
rename from core/modules/edit/lib/Drupal/edit/EditorInterface.php
rename to core/modules/edit/lib/Drupal/edit/EditPluginInterface.php
index 251233a..4fb793e 100644
--- a/core/modules/edit/lib/Drupal/edit/EditorInterface.php
+++ b/core/modules/edit/lib/Drupal/edit/EditPluginInterface.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\edit\EditorInterface.
+ * Contains \Drupal\edit\EditPluginInterface.
  */
 
 namespace Drupal\edit;
@@ -16,7 +16,7 @@
  * A PropertyEditor widget is a user-facing interface to edit an entity property
  * through Create.js.
  */
-interface EditorInterface extends PluginInspectionInterface {
+interface EditPluginInterface extends PluginInspectionInterface {
 
   /**
    * Checks whether this editor is compatible with a given field instance.
diff --git a/core/modules/edit/lib/Drupal/edit/EditorBase.php b/core/modules/edit/lib/Drupal/edit/EditorBase.php
index d2e4d09..a8622ae 100644
--- a/core/modules/edit/lib/Drupal/edit/EditorBase.php
+++ b/core/modules/edit/lib/Drupal/edit/EditorBase.php
@@ -8,16 +8,16 @@
 namespace Drupal\edit;
 
 use Drupal\Component\Plugin\PluginBase;
-use Drupal\edit\EditorInterface;
+use Drupal\edit\EditPluginInterface;
 use Drupal\field\FieldInstance;
 
 /**
  * Defines a base editor (Create.js PropertyEditor widget) implementation.
  */
-abstract class EditorBase extends PluginBase implements EditorInterface {
+abstract class EditorBase extends PluginBase implements EditPluginInterface {
 
   /**
-   * Implements \Drupal\edit\EditorInterface::getMetadata().
+   * Implements \Drupal\edit\EditPluginInterface::getMetadata().
    */
   function getMetadata(FieldInstance $instance, array $items) {
     return array();
diff --git a/core/modules/edit/lib/Drupal/edit/Plugin/edit/editor/DirectEditor.php b/core/modules/edit/lib/Drupal/edit/Plugin/edit/editor/DirectEditor.php
index 28b86f9..88cc4cd 100644
--- a/core/modules/edit/lib/Drupal/edit/Plugin/edit/editor/DirectEditor.php
+++ b/core/modules/edit/lib/Drupal/edit/Plugin/edit/editor/DirectEditor.php
@@ -23,7 +23,7 @@
 class DirectEditor extends EditorBase {
 
   /**
-   * Implements \Drupal\edit\EditorInterface::isCompatible().
+   * Implements \Drupal\edit\EditPluginInterface::isCompatible().
    *
    * @todo The processed text logic is too coupled to text fields. Figure out
    *   how to generalize to other textual field types.
@@ -45,7 +45,7 @@ function isCompatible(FieldInstance $instance, array $items) {
   }
 
   /**
-   * Implements \Drupal\edit\EditorInterface::getAttachments().
+   * Implements \Drupal\edit\EditPluginInterface::getAttachments().
    */
   public function getAttachments() {
     return array(
diff --git a/core/modules/edit/lib/Drupal/edit/Plugin/edit/editor/FormEditor.php b/core/modules/edit/lib/Drupal/edit/Plugin/edit/editor/FormEditor.php
index 65ddc58..dfe0f37 100644
--- a/core/modules/edit/lib/Drupal/edit/Plugin/edit/editor/FormEditor.php
+++ b/core/modules/edit/lib/Drupal/edit/Plugin/edit/editor/FormEditor.php
@@ -23,14 +23,14 @@
 class FormEditor extends EditorBase {
 
   /**
-   * Implements \Drupal\edit\EditorInterface::isCompatible().
+   * Implements \Drupal\edit\EditPluginInterface::isCompatible().
    */
   function isCompatible(FieldInstance $instance, array $items) {
     return TRUE;
   }
 
   /**
-   * Implements \Drupal\edit\EditorInterface::getAttachments().
+   * Implements \Drupal\edit\EditPluginInterface::getAttachments().
    */
   public function getAttachments() {
     return array(
diff --git a/core/modules/edit/tests/modules/lib/Drupal/edit_test/Plugin/edit/editor/WysiwygEditor.php b/core/modules/edit/tests/modules/lib/Drupal/edit_test/Plugin/edit/editor/WysiwygEditor.php
index 81387f0..28872c3 100644
--- a/core/modules/edit/tests/modules/lib/Drupal/edit_test/Plugin/edit/editor/WysiwygEditor.php
+++ b/core/modules/edit/tests/modules/lib/Drupal/edit_test/Plugin/edit/editor/WysiwygEditor.php
@@ -24,7 +24,7 @@
 class WysiwygEditor extends EditorBase {
 
   /**
-   * Implements \Drupal\edit\EditorInterface::isCompatible().
+   * Implements \Drupal\edit\EditPluginInterface::isCompatible().
    */
   function isCompatible(FieldInstance $instance, array $items) {
     $field = field_info_field($instance['field_name']);
@@ -46,7 +46,7 @@ function isCompatible(FieldInstance $instance, array $items) {
   }
 
   /**
-   * Implements \Drupal\edit\EditorInterface::getMetadata().
+   * Implements \Drupal\edit\EditPluginInterface::getMetadata().
    */
   function getMetadata(FieldInstance $instance, array $items) {
     $format_id = $items[0]['format'];
@@ -55,7 +55,7 @@ function getMetadata(FieldInstance $instance, array $items) {
   }
 
   /**
-   * Implements \Drupal\edit\EditorInterface::getAttachments().
+   * Implements \Drupal\edit\EditPluginInterface::getAttachments().
    */
   public function getAttachments() {
     return array(
diff --git a/core/modules/editor/lib/Drupal/editor/EditorInterface.php b/core/modules/editor/lib/Drupal/editor/EditorInterface.php
new file mode 100644
index 0000000..330b7f2
--- /dev/null
+++ b/core/modules/editor/lib/Drupal/editor/EditorInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\editor\Plugin\Core\Entity\EditPluginInterface.
+ */
+
+namespace Drupal\editor;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface EditorInterface extends ConfigEntityInterface {
+
+}
diff --git a/core/modules/editor/lib/Drupal/editor/Plugin/Core/Entity/Editor.php b/core/modules/editor/lib/Drupal/editor/Plugin/Core/Entity/Editor.php
index 22271ee..a549876 100644
--- a/core/modules/editor/lib/Drupal/editor/Plugin/Core/Entity/Editor.php
+++ b/core/modules/editor/lib/Drupal/editor/Plugin/Core/Entity/Editor.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\editor\EditorInterface;
 
 /**
  * Defines the configured text editor entity.
@@ -26,7 +27,7 @@
  *   }
  * )
  */
-class Editor extends ConfigEntityBase {
+class Editor extends ConfigEntityBase implements EditorInterface {
 
   /**
    * The machine name of the text format with which this configured text editor
diff --git a/core/modules/editor/lib/Drupal/editor/Plugin/EditorBase.php b/core/modules/editor/lib/Drupal/editor/Plugin/EditorBase.php
index 00f5e78..ecd5a7b 100644
--- a/core/modules/editor/lib/Drupal/editor/Plugin/EditorBase.php
+++ b/core/modules/editor/lib/Drupal/editor/Plugin/EditorBase.php
@@ -9,12 +9,12 @@
 
 use Drupal\Component\Plugin\PluginBase;
 use Drupal\editor\Plugin\Core\Entity\Editor;
-use Drupal\editor\Plugin\EditorInterface;
+use Drupal\editor\Plugin\EditorPluginInterface;
 
 /**
  * Defines a base class from which other modules providing editors may extend.
  *
- * This class provides default implementations of the EditorInterface so that
+ * This class provides default implementations of the EditPluginInterface so that
  * classes extending this one do not need to implement every method.
  *
  * Plugins extending this class need to define a plugin definition array through
@@ -36,30 +36,30 @@
  * )
  * @endcode
  */
-abstract class EditorBase extends PluginBase implements EditorInterface {
+abstract class EditorBase extends PluginBase implements EditorPluginInterface {
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::getDefaultSettings().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::getDefaultSettings().
    */
   public function getDefaultSettings() {
     return array();
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::settingsForm().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::settingsForm().
    */
   public function settingsForm(array $form, array &$form_state, Editor $editor) {
     return $form;
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::settingsFormValidate().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::settingsFormValidate().
    */
   public function settingsFormValidate(array $form, array &$form_state) {
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::settingsFormSubmit().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::settingsFormSubmit().
    */
   public function settingsFormSubmit(array $form, array &$form_state) {
   }
diff --git a/core/modules/editor/lib/Drupal/editor/Plugin/EditorInterface.php b/core/modules/editor/lib/Drupal/editor/Plugin/EditorPluginInterface.php
similarity index 96%
rename from core/modules/editor/lib/Drupal/editor/Plugin/EditorInterface.php
rename to core/modules/editor/lib/Drupal/editor/Plugin/EditorPluginInterface.php
index 939d877..c64a303 100644
--- a/core/modules/editor/lib/Drupal/editor/Plugin/EditorInterface.php
+++ b/core/modules/editor/lib/Drupal/editor/Plugin/EditorPluginInterface.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\editor\Plugin\EditorInterface.
+ * Contains \Drupal\editor\Plugin\EditPluginInterface.
  */
 
 namespace Drupal\editor\Plugin;
@@ -17,7 +17,7 @@
  * class, which provides default implementations of each method where
  * appropriate.
  */
-interface EditorInterface extends PluginInspectionInterface {
+interface EditorPluginInterface extends PluginInspectionInterface {
 
   /**
    * Returns the default settings for this configurable text editor.
diff --git a/core/modules/editor/lib/Drupal/editor/Plugin/edit/editor/Editor.php b/core/modules/editor/lib/Drupal/editor/Plugin/edit/editor/Editor.php
index da8f189..15f9193 100644
--- a/core/modules/editor/lib/Drupal/editor/Plugin/edit/editor/Editor.php
+++ b/core/modules/editor/lib/Drupal/editor/Plugin/edit/editor/Editor.php
@@ -10,7 +10,7 @@
 use Drupal\Component\Plugin\PluginBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
-use Drupal\edit\EditorInterface;
+use Drupal\edit\EditPluginInterface;
 use Drupal\field\FieldInstance;
 
 
@@ -24,10 +24,10 @@
  *   module = "editor"
  * )
  */
-class Editor extends PluginBase implements EditorInterface {
+class Editor extends PluginBase implements EditPluginInterface {
 
   /**
-   * Implements \Drupal\edit\Plugin\EditorInterface::isCompatible().
+   * Implements \Drupal\edit\Plugin\EditPluginInterface::isCompatible().
    */
   function isCompatible(FieldInstance $instance, array $items) {
     $field = field_info_field($instance['field_name']);
@@ -53,7 +53,7 @@ function isCompatible(FieldInstance $instance, array $items) {
   }
 
   /**
-   * Implements \Drupal\edit\Plugin\EditorInterface::getMetadata().
+   * Implements \Drupal\edit\Plugin\EditPluginInterface::getMetadata().
    */
   function getMetadata(FieldInstance $instance, array $items) {
     $format_id = $items[0]['format'];
@@ -70,7 +70,7 @@ protected function textFormatHasTransformationFilters($format_id) {
   }
 
   /**
-   * Implements \Drupal\edit\EditorInterface::getAttachments().
+   * Implements \Drupal\edit\EditPluginInterface::getAttachments().
    */
   public function getAttachments() {
     global $user;
diff --git a/core/modules/editor/tests/modules/lib/Drupal/editor_test/Plugin/editor/editor/UnicornEditor.php b/core/modules/editor/tests/modules/lib/Drupal/editor_test/Plugin/editor/editor/UnicornEditor.php
index 75deb09..0380bbb 100644
--- a/core/modules/editor/tests/modules/lib/Drupal/editor_test/Plugin/editor/editor/UnicornEditor.php
+++ b/core/modules/editor/tests/modules/lib/Drupal/editor_test/Plugin/editor/editor/UnicornEditor.php
@@ -25,14 +25,14 @@
 class UnicornEditor extends EditorBase {
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::getDefaultSettings().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::getDefaultSettings().
    */
   function getDefaultSettings() {
     return array('ponies too' => TRUE);
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::settingsForm().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::settingsForm().
    */
   function settingsForm(array $form, array &$form_state, Editor $editor) {
     $form['foo'] = array('#type' => 'textfield', '#default_value' => 'bar');
@@ -40,7 +40,7 @@ function settingsForm(array $form, array &$form_state, Editor $editor) {
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::getJSSettings().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::getJSSettings().
    */
   function getJSSettings(Editor $editor) {
     $settings = array();
@@ -51,7 +51,7 @@ function getJSSettings(Editor $editor) {
   }
 
   /**
-   * Implements \Drupal\editor\Plugin\EditorInterface::getLibraries().
+   * Implements \Drupal\editor\Plugin\EditPluginInterface::getLibraries().
    */
   public function getLibraries(Editor $editor) {
     return array(
diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayInterface.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayInterface.php
new file mode 100644
index 0000000..253f3fe
--- /dev/null
+++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayInterface.php
@@ -0,0 +1,96 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\entity\Plugin\Core\Entity\EntityDisplayInterface.
+ */
+
+namespace Drupal\entity;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface EntityDisplayInterface 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 Formatter plugin for a field.
+   *
+   * @param string $field_name
+   *   The field name.
+   *
+   * @return \Drupal\field\Plugin\Type\Formatter\FormatterInterface
+   *   If the field is not hidden, the Formatter plugin to use for rendering
+   *   it.
+   */
+  public function getFormatter($field_name);
+
+}
diff --git a/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php b/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php
index d88967f..7fef2cd 100644
--- a/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php
+++ b/core/modules/entity/lib/Drupal/entity/Plugin/Core/Entity/EntityDisplay.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\entity\EntityDisplayInterface;
 
 /**
  * Configuration entity that contains display options for all components of a
@@ -27,7 +28,7 @@
  *   }
  * )
  */
-class EntityDisplay extends ConfigEntityBase {
+class EntityDisplay extends ConfigEntityBase implements EntityDisplayInterface {
 
   /**
    * Unique ID for the config entity.
@@ -140,16 +141,7 @@ public function getExportProperties() {
   }
 
   /**
-   * 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.
+   * {@inheritdoc}
    */
   public function createCopy($view_mode) {
     $display = $this->createDuplicate();
@@ -158,10 +150,7 @@ public function createCopy($view_mode) {
   }
 
   /**
-   * Gets the display options for all components.
-   *
-   * @return array
-   *   The array of display options, keyed by component name.
+   * {@inheritdoc}
    */
   public function getComponents() {
     $result = array();
@@ -175,14 +164,7 @@ 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.
+   * {@inheritdoc}
    */
   public function getComponent($name) {
     // We always store 'extra fields', whether they are visible or hidden.
@@ -220,15 +202,7 @@ 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.
+   * {@inheritdoc}
    */
   public function setComponent($name, array $options = array()) {
     // If no weight specified, make sure the field sinks at the bottom.
@@ -257,13 +231,7 @@ 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.
+   * {@inheritdoc}
    */
   public function removeComponent($name) {
     $extra_fields = field_info_extra_fields($this->targetEntityType, $this->bundle, 'display');
@@ -285,11 +253,7 @@ 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.
+   * {@inheritdoc}
    */
   public function getHighestWeight() {
     $weights = array();
@@ -308,14 +272,7 @@ public function getHighestWeight() {
   }
 
   /**
-   * Returns the Formatter plugin for a field.
-   *
-   * @param string $field_name
-   *   The field name.
-   *
-   * @return \Drupal\field\Plugin\Type\Formatter\FormatterInterface
-   *   If the field is not hidden, the Formatter plugin to use for rendering
-   *   it.
+   * {@inheritdoc}
    */
   public function getFormatter($field_name) {
     if (isset($this->formatters[$field_name])) {
diff --git a/core/modules/file/lib/Drupal/file/FileInterface.php b/core/modules/file/lib/Drupal/file/FileInterface.php
new file mode 100644
index 0000000..b391ed5
--- /dev/null
+++ b/core/modules/file/lib/Drupal/file/FileInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\file\Plugin\Core\Entity\FileInterface.
+ */
+
+namespace Drupal\file;
+
+use Drupal\Core\Entity\ContentEntityInterface;
+
+/**
+ * @todo.
+ */
+interface FileInterface extends ContentEntityInterface {
+
+}
diff --git a/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php b/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
index 080c47a..301514c 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\file\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\file\FileInterface;
 
 /**
  * Defines the file entity class.
@@ -29,7 +29,7 @@
  *   }
  * )
  */
-class File extends Entity implements ContentEntityInterface {
+class File extends Entity implements FileInterface {
 
   /**
    * The file ID.
diff --git a/core/modules/filter/lib/Drupal/filter/FilterFormatInterface.php b/core/modules/filter/lib/Drupal/filter/FilterFormatInterface.php
new file mode 100644
index 0000000..9a92921
--- /dev/null
+++ b/core/modules/filter/lib/Drupal/filter/FilterFormatInterface.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\filter\Plugin\Core\Entity\FilterFormatInterface.
+ */
+
+namespace Drupal\filter;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface FilterFormatInterface extends ConfigEntityInterface {
+
+  /**
+   * Helper callback for uasort() to sort filters by status, weight, module, and name.
+   *
+   * @see Drupal\filter\FilterFormatStorageController::preSave()
+   * @see filter_list_format()
+   */
+  public static function sortFilters($a, $b);
+
+}
diff --git a/core/modules/filter/lib/Drupal/filter/Plugin/Core/Entity/FilterFormat.php b/core/modules/filter/lib/Drupal/filter/Plugin/Core/Entity/FilterFormat.php
index 6dd76f9..183d4a3 100644
--- a/core/modules/filter/lib/Drupal/filter/Plugin/Core/Entity/FilterFormat.php
+++ b/core/modules/filter/lib/Drupal/filter/Plugin/Core/Entity/FilterFormat.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\filter\FilterFormatInterface;
 
 /**
  * Represents a text format.
@@ -28,7 +29,7 @@
  *   }
  * )
  */
-class FilterFormat extends ConfigEntityBase {
+class FilterFormat extends ConfigEntityBase implements FilterFormatInterface {
 
   /**
    * Unique machine name of the format.
@@ -119,10 +120,7 @@ public function id() {
   }
 
   /**
-   * Helper callback for uasort() to sort filters by status, weight, module, and name.
-   *
-   * @see Drupal\filter\FilterFormatStorageController::preSave()
-   * @see filter_list_format()
+   * {@inheritdoc}
    */
   public static function sortFilters($a, $b) {
     if ($a['status'] != $b['status']) {
diff --git a/core/modules/image/lib/Drupal/image/ImageStyleInterface.php b/core/modules/image/lib/Drupal/image/ImageStyleInterface.php
new file mode 100644
index 0000000..64d3705
--- /dev/null
+++ b/core/modules/image/lib/Drupal/image/ImageStyleInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\image\Plugin\Core\Entity\ImageStyleInterface.
+ */
+
+namespace Drupal\image;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface ImageStyleInterface extends ConfigEntityInterface {
+
+}
diff --git a/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php b/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php
index 2c01d95..06059c4 100644
--- a/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php
+++ b/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\image\ImageStyleInterface;
 
 /**
  * Defines an image style configuration entity.
@@ -28,7 +29,7 @@
  *   }
  * )
  */
-class ImageStyle extends ConfigEntityBase {
+class ImageStyle extends ConfigEntityBase implements ImageStyleInterface {
 
   /**
    * The name of the image style to use as replacement upon delete.
diff --git a/core/modules/layout/lib/Drupal/layout/Config/DisplayInterface.php b/core/modules/layout/lib/Drupal/layout/Config/DisplayInterface.php
index 871aadc..916d897 100644
--- a/core/modules/layout/lib/Drupal/layout/Config/DisplayInterface.php
+++ b/core/modules/layout/lib/Drupal/layout/Config/DisplayInterface.php
@@ -7,6 +7,7 @@
 namespace Drupal\layout\Config;
 
 use Drupal\layout\Plugin\LayoutInterface;
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
 
 /**
  * Interface describing a Display configuration object.
@@ -28,7 +29,7 @@
  * @see \Drupal\layout\Config\BoundDisplayInterface
  * @see \Drupal\layout\Config\UnboundDisplayInterface
  */
-interface DisplayInterface {
+interface DisplayInterface extends ConfigEntityInterface {
 
   /**
    * Returns the display-specific configuration of all blocks in this display.
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkInterface.php b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkInterface.php
new file mode 100644
index 0000000..fd6432e
--- /dev/null
+++ b/core/modules/menu_link/lib/Drupal/menu_link/MenuLinkInterface.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\menu_link\Plugin\Core\Entity\MenuLinkInterface.
+ */
+
+namespace Drupal\menu_link;
+
+use Symfony\Component\Routing\Route;
+use Drupal\Core\Entity\ContentEntityInterface;
+
+/**
+ * @todo.
+ */
+interface MenuLinkInterface extends ContentEntityInterface {
+
+  /**
+   * Returns the Route object associated with this link, if any.
+   *
+   * @return \Symfony\Component\Routing\Route|null
+   *   The route object for this menu link, or NULL if there isn't one.
+   */
+  public function getRoute();
+
+  /**
+   * Sets the route object for this link.
+   *
+   * This should only be called by MenuLinkStorageController when loading
+   * the link object. Calling it at other times could result in unpredictable
+   * behavior.
+   *
+   * @param \Symfony\Component\Routing\Route $route
+   */
+  public function setRouteObject(Route $route);
+
+  /**
+   * Resets a system-defined menu link.
+   *
+   * @return \Drupal\Core\Entity\EntityInterface
+   *   A menu link entity.
+   */
+  public function reset();
+
+  /**
+   * Builds a menu link entity from a router item.
+   *
+   * @param array $item
+   *   A menu router item.
+   *
+   * @return \Drupal\menu_link\MenuLinkInterface
+   *   A menu link entity.
+   */
+  public static function buildFromRouterItem(array $item);
+
+}
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php b/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
index ce3911d..ddd5c02 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/Plugin/Core/Entity/MenuLink.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\menu_link\Plugin\Core\Entity;
 
+use Drupal\menu_link\MenuLinkInterface;
 use Symfony\Component\Routing\Route;
 
 use Drupal\Component\Annotation\Plugin;
@@ -41,7 +42,7 @@
  *   }
  * )
  */
-class MenuLink extends Entity implements \ArrayAccess, ContentEntityInterface {
+class MenuLink extends Entity implements \ArrayAccess, MenuLinkInterface {
 
   /**
    * The link's menu name.
@@ -265,10 +266,7 @@ public function createDuplicate() {
   }
 
   /**
-   * Returns the Route object associated with this link, if any.
-   *
-   * @return \Symfony\Component\Routing\Route|null
-   *   The route object for this menu link, or NULL if there isn't one.
+   * {@inheritdoc}
    */
   public function getRoute() {
     if (!$this->route_name) {
@@ -282,23 +280,14 @@ public function getRoute() {
   }
 
   /**
-   * Sets the route object for this link.
-   *
-   * This should only be called by MenuLinkStorageController when loading
-   * the link object. Calling it at other times could result in unpredictable
-   * behavior.
-   *
-   * @param \Symfony\Component\Routing\Route $route
+   * {@inheritdoc}
    */
   public function setRouteObject(Route $route) {
     $this->routeObject = $route;
   }
 
   /**
-   * Resets a system-defined menu link.
-   *
-   * @return \Drupal\Core\Entity\EntityInterface
-   *   A menu link entity.
+   * {@inheritdoc}
    */
   public function reset() {
     // To reset the link to its original values, we need to retrieve its
@@ -318,13 +307,7 @@ public function reset() {
   }
 
   /**
-   * Builds a menu link entity from a router item.
-   *
-   * @param array $item
-   *   A menu router item.
-   *
-   * @return MenuLink
-   *   A menu link entity.
+   * {@inheritdoc}
    */
   public static function buildFromRouterItem(array $item) {
     // Suggested items are disabled by default.
diff --git a/core/modules/node/lib/Drupal/node/NodeInterface.php b/core/modules/node/lib/Drupal/node/NodeInterface.php
new file mode 100644
index 0000000..4445038
--- /dev/null
+++ b/core/modules/node/lib/Drupal/node/NodeInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\node\Plugin\Core\Entity\NodeInterface.
+ */
+
+namespace Drupal\node;
+
+use Drupal\Core\Entity\ContentEntityInterface;
+
+/**
+ * @todo.
+ */
+interface NodeInterface extends ContentEntityInterface {
+
+}
diff --git a/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php b/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
index 92ed8e8..11425ac 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\node\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityNG;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\node\NodeInterface;
 
 /**
  * Defines the node entity class.
@@ -45,7 +45,7 @@
  *   permission_granularity = "bundle"
  * )
  */
-class Node extends EntityNG implements ContentEntityInterface {
+class Node extends EntityNG implements NodeInterface {
 
   /**
    * The node ID.
diff --git a/core/modules/picture/lib/Drupal/picture/PictureMappingFormController.php b/core/modules/picture/lib/Drupal/picture/PictureMappingFormController.php
index 466e14c..033d853 100644
--- a/core/modules/picture/lib/Drupal/picture/PictureMappingFormController.php
+++ b/core/modules/picture/lib/Drupal/picture/PictureMappingFormController.php
@@ -22,7 +22,7 @@ class PictureMappingFormController extends EntityFormController {
    *   A nested array form elements comprising the form.
    * @param array $form_state
    *   An associative array containing the current state of the form.
-   * @param \Drupal\picture\PictureMapping $picture_mapping
+   * @param \Drupal\picture\PictureMappingInterface $picture_mapping
    *   The entity being edited.
    *
    * @return array
diff --git a/core/modules/picture/lib/Drupal/picture/PictureMappingInterface.php b/core/modules/picture/lib/Drupal/picture/PictureMappingInterface.php
new file mode 100644
index 0000000..10a631a
--- /dev/null
+++ b/core/modules/picture/lib/Drupal/picture/PictureMappingInterface.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\picture\Plugin\Core\Entity\PictureMappingInterface.
+ */
+
+namespace Drupal\picture;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface PictureMappingInterface extends ConfigEntityInterface {
+
+  /**
+   * Checks if there's at least one mapping defined.
+   */
+  public function hasMappings();
+
+}
diff --git a/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php b/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php
index b65f248..eed25cc 100644
--- a/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php
+++ b/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\picture\PictureMappingInterface;
 
 /**
  * Defines the Picture entity.
@@ -35,7 +36,7 @@
  *   }
  * )
  */
-class PictureMapping extends ConfigEntityBase {
+class PictureMapping extends ConfigEntityBase implements PictureMappingInterface {
 
   /**
    * The picture ID (machine name).
@@ -145,7 +146,7 @@ protected function loadAllMappings() {
   }
 
   /**
-   * Checks if there's at least one mapping defined.
+   * {@inheritdoc}
    */
   public function hasMappings() {
     $mapping_found = FALSE;
@@ -158,4 +159,5 @@ public function hasMappings() {
     }
     return $mapping_found;
   }
+
 }
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php b/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
index fd72e3c..3e3f382 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Plugin/Core/Entity/Shortcut.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\shortcut\ShortcutInterface;
 
 /**
  * Defines the Shortcut configuration entity.
@@ -31,7 +32,7 @@
  *   }
  * )
  */
-class Shortcut extends ConfigEntityBase {
+class Shortcut extends ConfigEntityBase implements ShortcutInterface {
 
   /**
    * The machine name for the configuration entity.
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/ShortcutInterface.php b/core/modules/shortcut/lib/Drupal/shortcut/ShortcutInterface.php
new file mode 100644
index 0000000..a8d0697
--- /dev/null
+++ b/core/modules/shortcut/lib/Drupal/shortcut/ShortcutInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\shortcut\Plugin\Core\Entity\ShortcutInterface.
+ */
+
+namespace Drupal\shortcut;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface ShortcutInterface extends ConfigEntityInterface {
+
+}
diff --git a/core/modules/system/lib/Drupal/system/MenuInterface.php b/core/modules/system/lib/Drupal/system/MenuInterface.php
new file mode 100644
index 0000000..ed6738c
--- /dev/null
+++ b/core/modules/system/lib/Drupal/system/MenuInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Plugin\Core\Entity\MenuInterface.
+ */
+
+namespace Drupal\system;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface MenuInterface extends ConfigEntityInterface {
+
+}
diff --git a/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php b/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php
index 4b63d9b..590b428 100644
--- a/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php
+++ b/core/modules/system/lib/Drupal/system/Plugin/Core/Entity/Menu.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\system\MenuInterface;
 
 /**
  * Defines the Menu configuration entity class.
@@ -27,7 +28,7 @@
  *   }
  * )
  */
-class Menu extends ConfigEntityBase {
+class Menu extends ConfigEntityBase implements MenuInterface {
 
   /**
    * The menu machine name.
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
index affe712..5034dac 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\taxonomy\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\taxonomy\TermInterface;
 
 /**
  * Defines the taxonomy term entity.
@@ -44,7 +44,7 @@
  *   permission_granularity = "bundle"
  * )
  */
-class Term extends Entity implements ContentEntityInterface {
+class Term extends Entity implements TermInterface {
 
   /**
    * The taxonomy term ID.
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php
index c125418..4ef801b 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\taxonomy\VocabularyInterface;
 
 /**
  * Defines the taxonomy vocabulary entity.
@@ -30,7 +31,7 @@
  *   }
  * )
  */
-class Vocabulary extends ConfigEntityBase {
+class Vocabulary extends ConfigEntityBase implements VocabularyInterface {
 
   /**
    * The taxonomy vocabulary ID.
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/TermInterface.php b/core/modules/taxonomy/lib/Drupal/taxonomy/TermInterface.php
new file mode 100644
index 0000000..a0a4484
--- /dev/null
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/TermInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\taxonomy\Plugin\Core\Entity\TermInterface.
+ */
+
+namespace Drupal\taxonomy;
+
+use Drupal\Core\Entity\ContentEntityInterface;
+
+/**
+ * @todo.
+ */
+interface TermInterface extends ContentEntityInterface {
+
+}
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyInterface.php b/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyInterface.php
new file mode 100644
index 0000000..528e02d
--- /dev/null
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\taxonomy\Plugin\Core\Entity\VocabularyInterface.
+ */
+
+namespace Drupal\taxonomy;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface VocabularyInterface extends ConfigEntityInterface {
+
+}
diff --git a/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php b/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php
index 12ca122..e5cc3a2 100644
--- a/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php
+++ b/core/modules/tour/lib/Drupal/tour/Plugin/Core/Entity/Tour.php
@@ -11,6 +11,7 @@
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
 use Drupal\tour\TipsBag;
+use Drupal\tour\TourInterface;
 
 /**
  * Defines the configured tour entity.
@@ -29,7 +30,7 @@
  *   }
  * )
  */
-class Tour extends ConfigEntityBase {
+class Tour extends ConfigEntityBase implements TourInterface {
 
   /**
    * The name (plugin ID) of the tour.
@@ -76,40 +77,21 @@ public function __construct(array $values, $entity_type) {
   }
 
   /**
-   * Returns label of tour.
-   *
-   * @return string
-   *   The label of the tour.
-   */
-  public function getLabel() {
-    return $this->label;
-  }
-
-  /**
-   * The paths that this tour will appear on.
-   *
-   * @return array
-   *   Returns array of paths for the tour.
+   * {@inheritdoc}
    */
   public function getPaths() {
     return $this->paths;
   }
 
   /**
-   * Returns tip plugin.
-   *
-   * @return string
-   *   The identifier of the tip.
+   * {@inheritdoc}
    */
   public function getTip($id) {
     return $this->tipsBag->get($id);
   }
 
   /**
-   * Returns the tips for this tour.
-   *
-   * @return array
-   *   An array of tip plugins.
+   * {@inheritdoc}
    */
   public function getTips() {
     $tips = array();
diff --git a/core/modules/tour/lib/Drupal/tour/TourInterface.php b/core/modules/tour/lib/Drupal/tour/TourInterface.php
new file mode 100644
index 0000000..0b3d710
--- /dev/null
+++ b/core/modules/tour/lib/Drupal/tour/TourInterface.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\tour\Plugin\Core\Entity\TourInterface.
+ */
+
+namespace Drupal\tour;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface TourInterface extends ConfigEntityInterface {
+
+  /**
+   * The paths that this tour will appear on.
+   *
+   * @return array
+   *   Returns array of paths for the tour.
+   */
+  public function getPaths();
+
+  /**
+   * Returns tip plugin.
+   *
+   * @param string $id
+   *   The identifier of the tip.
+   *
+   * @return \Drupal\tour\TipPluginInterface
+   *   The tip plugin.
+   */
+  public function getTip($id);
+
+  /**
+   * Returns the tips for this tour.
+   *
+   * @return array
+   *   An array of tip plugins.
+   */
+  public function getTips();
+
+}
diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
index f64955c..ed2baa5 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/Role.php
@@ -10,6 +10,7 @@
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
 use Drupal\Core\Config\Entity\ConfigEntityBase;
+use Drupal\user\RoleInterface;
 
 /**
  * Defines the user role entity class.
@@ -27,7 +28,7 @@
  *   }
  * )
  */
-class Role extends ConfigEntityBase {
+class Role extends ConfigEntityBase implements RoleInterface {
 
   /**
    * The machine name of this role.
diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
index fb7cbbb..c94e37e 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
@@ -10,6 +10,7 @@
 use Drupal\Core\Entity\Entity;
 use Drupal\Component\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
+use Drupal\user\UserInterface;
 
 /**
  * Defines the user entity class.
@@ -38,7 +39,7 @@
  *   }
  * )
  */
-class User extends Entity {
+class User extends Entity implements UserInterface {
 
   /**
    * The user ID.
diff --git a/core/modules/user/lib/Drupal/user/RoleInterface.php b/core/modules/user/lib/Drupal/user/RoleInterface.php
new file mode 100644
index 0000000..3224ab5
--- /dev/null
+++ b/core/modules/user/lib/Drupal/user/RoleInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\user\Plugin\Core\Entity\RoleInterface.
+ */
+
+namespace Drupal\user;
+
+use Drupal\Core\Config\Entity\ConfigEntityInterface;
+
+/**
+ * @todo.
+ */
+interface RoleInterface extends ConfigEntityInterface {
+
+}
diff --git a/core/modules/user/lib/Drupal/user/UserInterface.php b/core/modules/user/lib/Drupal/user/UserInterface.php
new file mode 100644
index 0000000..98de086
--- /dev/null
+++ b/core/modules/user/lib/Drupal/user/UserInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\user\Plugin\Core\Entity\UserInterface.
+ */
+
+namespace Drupal\user;
+
+use Drupal\Core\Entity\EntityInterface;
+
+/**
+ * @todo.
+ */
+interface UserInterface extends EntityInterface {
+
+}
