diff --git a/core/includes/entity.inc b/core/includes/entity.inc
index b3171ea..2474cfe 100644
--- a/core/includes/entity.inc
+++ b/core/includes/entity.inc
@@ -174,7 +174,7 @@ function entity_load_by_uuid($entity_type, $uuid, $reset = FALSE) {
  * either implement the Drupal\Core\Entity\EntityStorageControllerInterface
  * interface, or, most commonly, extend the
  * Drupal\Core\Entity\DatabaseStorageController class.
- * See Drupal\node\Plugin\Core\Entity\Node and Drupal\node\NodeStorageController
+ * See Drupal\node\EntityType\Node and Drupal\node\NodeStorageController
  * for an example.
  *
  * @param string $entity_type
diff --git a/core/lib/Drupal/Core/Entity/AnnotatedClassDiscovery.php b/core/lib/Drupal/Core/Entity/AnnotatedClassDiscovery.php
new file mode 100644
index 0000000..76b34b2
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/AnnotatedClassDiscovery.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\Core\Entity\AnnotatedClassDiscovery.
+ */
+
+namespace Drupal\Core\Entity;
+
+use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscoveryBase;
+
+/**
+ * Defines a discovery mechanism to find annotated plugins in PSR-0 namespaces.
+ */
+class AnnotatedClassDiscovery extends AnnotatedClassDiscoveryBase {
+
+  /**
+   * Overrides \Drupal\Core\Plugin\Discovery\AnnotatedClassDiscoveryBase::getDirectoryStructure().
+   */
+  protected function getDirectoryStructure($namespace) {
+    return array(
+      $namespace,
+      'EntityType',
+    );
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index 979614f..14ad25c 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -251,7 +251,7 @@ public function getIterator() {
   /**
    * Implements AccessibleInterface::access().
    */
-  public function access($operation = 'view', \Drupal\user\Plugin\Core\Entity\User $account = NULL) {
+  public function access($operation = 'view', \Drupal\user\EntityType\User $account = NULL) {
     $method = $operation . 'Access';
     return entity_access_controller($this->entityType)->$method($this, LANGUAGE_DEFAULT, $account);
   }
diff --git a/core/lib/Drupal/Core/Entity/EntityAccessController.php b/core/lib/Drupal/Core/Entity/EntityAccessController.php
index 2f13110..6827206 100644
--- a/core/lib/Drupal/Core/Entity/EntityAccessController.php
+++ b/core/lib/Drupal/Core/Entity/EntityAccessController.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\Core\Entity;
 
-use Drupal\user\Plugin\Core\Entity\User;
+use Drupal\user\EntityType\User;
 
 /**
  * Defines a base class for entity access controllers.
diff --git a/core/lib/Drupal/Core/Entity/EntityAccessControllerInterface.php b/core/lib/Drupal/Core/Entity/EntityAccessControllerInterface.php
index 5bbc996..f0f6f10 100644
--- a/core/lib/Drupal/Core/Entity/EntityAccessControllerInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityAccessControllerInterface.php
@@ -8,7 +8,7 @@
 namespace Drupal\Core\Entity;
 
 // @todo Don't depend on module level code.
-use Drupal\user\Plugin\Core\Entity\User;
+use Drupal\user\EntityType\User;
 
 /**
  * Defines a common interface for entity access controller classes.
@@ -23,7 +23,7 @@
    * @param string $langcode
    *   (optional) The language code for which to check access. Defaults to
    *   LANGUAGE_DEFAULT.
-   * @param \Drupal\user\Plugin\Core\Entity\User $account
+   * @param \Drupal\user\EntityType\User $account
    *   (optional) The user for which to check access, or NULL to check access
    *   for the current user. Defaults to NULL.
    *
@@ -40,7 +40,7 @@ public function viewAccess(EntityInterface $entity, $langcode = LANGUAGE_DEFAULT
    * @param string $langcode
    *   (optional) The language code for which to check access. Defaults to
    *   LANGUAGE_DEFAULT.
-   * @param \Drupal\user\Plugin\Core\Entity\User $account
+   * @param \Drupal\user\EntityType\User $account
    *   (optional) The user for which to check access, or NULL to check access
    *   for the current user. Defaults to NULL.
    *
@@ -57,7 +57,7 @@ public function createAccess(EntityInterface $entity, $langcode = LANGUAGE_DEFAU
    * @param string $langcode
    *   (optional) The language code for which to check access. Defaults to
    *   LANGUAGE_DEFAULT.
-   * @param \Drupal\user\Plugin\Core\Entity\User $account
+   * @param \Drupal\user\EntityType\User $account
    *   (optional) The user for which to check access, or NULL to check access
    *   for the current user. Defaults to NULL.
    *
@@ -74,7 +74,7 @@ public function updateAccess(EntityInterface $entity, $langcode = LANGUAGE_DEFAU
    * @param string $langcode
    *   (optional) The language code for which to check access. Defaults to
    *   LANGUAGE_DEFAULT.
-   * @param \Drupal\user\Plugin\Core\Entity\User $account
+   * @param \Drupal\user\EntityType\User $account
    *   (optional) The user for which to check access, or NULL to check access
    *   for the current user. Defaults to NULL.
    *
diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php
index 6c8e48b..f1a69a2 100644
--- a/core/lib/Drupal/Core/Entity/EntityManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityManager.php
@@ -7,17 +7,17 @@
 
 namespace Drupal\Core\Entity;
 
-use Drupal\Component\Plugin\PluginManagerBase;
+use Drupal\Component\Utility\NestedArray;
+use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
 use Drupal\Component\Plugin\Factory\DefaultFactory;
 use Drupal\Core\Plugin\Discovery\AlterDecorator;
-use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
 use Drupal\Core\Plugin\Discovery\InfoHookDecorator;
 use Drupal\Core\Cache\CacheBackendInterface;
 
 /**
- * Manages entity type plugin definitions.
+ * Manages entity type definitions.
  *
- * Each entity type definition array is set in the entity type plugin's
+ * Each entity type definition array is set in the entity type's class
  * annotation and altered by hook_entity_info_alter(). The definition includes
  * the following keys:
  * - module: The name of the module providing the type.
@@ -160,45 +160,52 @@
  * - menu_path_wildcard: (optional) A string identifying the menu loader in the
  *   router path.
  *
- * The defaults for the plugin definition are provided in
+ * The defaults for the definition are provided in
  * \Drupal\Core\Entity\EntityManager::defaults.
  *
  * @see \Drupal\Core\Entity\Entity
  * @see entity_get_info()
  * @see hook_entity_info_alter()
  */
-class EntityManager extends PluginManagerBase {
+class EntityManager implements DiscoveryInterface {
 
   /**
-   * The cache bin used for entity plugin definitions.
+   * The object that discovers classes managed by this manager.
+   *
+   * @var Drupal\Component\Plugin\Discovery\DiscoveryInterface
+   */
+  protected $discovery;
+
+  /**
+   * The cache bin used for entity type definitions.
    *
    * @var string
    */
   protected $cacheBin = 'cache';
 
   /**
-   * The cache key used for entity plugin definitions.
+   * The cache key used for entity type definitions.
    *
    * @var string
    */
   protected $cacheKey = 'entity_info';
 
   /**
-   * The cache expiration for entity plugin definitions.
+   * The cache expiration for entity type definitions.
    *
    * @var int
    */
   protected $cacheExpire = CacheBackendInterface::CACHE_PERMANENT;
 
   /**
-   * The cache tags used for entity plugin definitions.
+   * The cache tags used for entity type definitions.
    *
    * @var array
    */
   protected $cacheTags = array('entity_info' => TRUE);
 
   /**
-   * The default values for optional keys of the entity plugin definition.
+   * The default values for optional keys of the entity type definition.
    *
    * @var array
    */
@@ -224,20 +231,20 @@ class EntityManager extends PluginManagerBase {
   );
 
   /**
-   * Constructs a new Entity plugin manager.
+   * Constructs a new Entity manager object.
    */
   public function __construct() {
-    // Allow the plugin definition to be altered by hook_entity_info_alter().
+    // Allow the class definition to be altered by hook_entity_info_alter().
     $this->discovery = new AlterDecorator(new InfoHookDecorator(new AnnotatedClassDiscovery('Core', 'Entity'), 'entity_info'), 'entity_info');
     $this->factory = new DefaultFactory($this);
 
-    // Entity type plugins includes translated strings, so each language is
+    // Entity type definitions includes translated strings, so each language is
     // cached separately.
     $this->cacheKey .= ':' . language(LANGUAGE_TYPE_INTERFACE)->langcode;
   }
 
   /**
-   * Overrides Drupal\Component\Plugin\PluginManagerBase::getDefinition().
+   * Implements \Drupal\Component\Plugin\Discovery\DiscoveryInterface::getDefinition().
    */
   public function getDefinition($plugin_id) {
     $definitions = $this->getDefinitions();
@@ -245,7 +252,7 @@ public function getDefinition($plugin_id) {
   }
 
   /**
-   * Overrides Drupal\Component\Plugin\PluginManagerBase::getDefinitions().
+   * Implements \Drupal\Component\Plugin\Discovery\DiscoveryInterface::getDefinitions().
    */
   public function getDefinitions() {
     // Because \Drupal\Core\Plugin\Discovery\CacheDecorator runs before
@@ -255,19 +262,28 @@ public function getDefinitions() {
       return $cache->data;
     }
     else {
+      $definitions = $this->discovery->getDefinitions();
+      foreach ($definitions as $plugin_id => &$definition) {
+        $this->processDefinition($definition, $plugin_id);
+      }
       // @todo Remove array_filter() once http://drupal.org/node/1780396 is
       //   resolved.
-      $definitions = array_filter(parent::getDefinitions());
+      $definitions = array_filter($definitions);
       cache($this->cacheBin)->set($this->cacheKey, $definitions, $this->cacheExpire, $this->cacheTags);
       return $definitions;
     }
   }
 
   /**
-   * Overrides Drupal\Component\Plugin\PluginManagerBase::processDefinition().
+   * Performs extra processing on definitions.
+   *
+   * @param array $definition
+   *   The definiton being processed.
+   * @param string $plugin_id
+   *   The plugin ID for this definition.
    */
   protected function processDefinition(&$definition, $plugin_id) {
-    parent::processDefinition($definition, $plugin_id);
+    $definition = NestedArray::mergeDeep($this->defaults, $definition);
 
     // @todo Remove this check once http://drupal.org/node/1780396 is resolved.
     if (!module_exists($definition['module'])) {
diff --git a/core/lib/Drupal/Core/Entity/Field/Type/EntityTranslation.php b/core/lib/Drupal/Core/Entity/Field/Type/EntityTranslation.php
index 280fca9..c1a2cfa 100644
--- a/core/lib/Drupal/Core/Entity/Field/Type/EntityTranslation.php
+++ b/core/lib/Drupal/Core/Entity/Field/Type/EntityTranslation.php
@@ -233,7 +233,7 @@ public function isEmpty() {
   /**
    * Implements AccessibleInterface::access().
    */
-  public function access($operation = 'view', \Drupal\user\Plugin\Core\Entity\User $account = NULL) {
+  public function access($operation = 'view', \Drupal\user\EntityType\User $account = NULL) {
     $method = $operation . 'Access';
     return entity_access_controller($this->parent->entityType())->$method($this->parent, $this->langcode, $account);
   }
diff --git a/core/lib/Drupal/Core/Entity/Field/Type/Field.php b/core/lib/Drupal/Core/Entity/Field/Type/Field.php
index cc5951c..65cf032 100644
--- a/core/lib/Drupal/Core/Entity/Field/Type/Field.php
+++ b/core/lib/Drupal/Core/Entity/Field/Type/Field.php
@@ -10,7 +10,7 @@
 use Drupal\Core\Entity\Field\FieldInterface;
 use Drupal\Core\TypedData\TypedDataInterface;
 use Drupal\Core\TypedData\Type\TypedData;
-use Drupal\user\Plugin\Core\Entity\User;
+use Drupal\user\EntityType\User;
 use ArrayIterator;
 use IteratorAggregate;
 use InvalidArgumentException;
diff --git a/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php b/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php
index bd89a92..a51758c 100644
--- a/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php
+++ b/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php
@@ -7,18 +7,10 @@
 
 namespace Drupal\Core\Plugin\Discovery;
 
-use DirectoryIterator;
-use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
-use Drupal\Component\Reflection\MockFileFinder;
-use Drupal\Core\Annotation\Plugin;
-use Doctrine\Common\Annotations\AnnotationReader;
-use Doctrine\Common\Annotations\AnnotationRegistry;
-use Doctrine\Common\Reflection\StaticReflectionParser;
-
 /**
  * Defines a discovery mechanism to find annotated plugins in PSR-0 namespaces.
  */
-class AnnotatedClassDiscovery implements DiscoveryInterface {
+class AnnotatedClassDiscovery extends AnnotatedClassDiscoveryBase {
 
   /**
    * Constructs an AnnotatedClassDiscovery object.
@@ -29,72 +21,15 @@ function __construct($owner, $type) {
   }
 
   /**
-   * Implements Drupal\Component\Plugin\Discovery\DiscoveryInterface::getDefinition().
-   */
-  public function getDefinition($plugin_id) {
-    $plugins = $this->getDefinitions();
-    return isset($plugins[$plugin_id]) ? $plugins[$plugin_id] : NULL;
-  }
-
-  /**
-   * Implements Drupal\Component\Plugin\Discovery\DiscoveryInterface::getDefinitions().
+   * Overrides \Drupal\Core\Plugin\Discovery\AnnotatedClassDiscoveryBase::getDirectoryStructure().
    */
-  public function getDefinitions() {
-    $definitions = array();
-    $reader = new AnnotationReader();
-    // Prevent @endlink from being parsed as an annotation.
-    $reader->addGlobalIgnoredName('endlink');
-
-    // Register the namespace of classes that can be used for annotations.
-    AnnotationRegistry::registerAutoloadNamespace('Drupal\Core\Annotation', array(DRUPAL_ROOT . '/core/lib'));
-    // Get all PSR-0 namespaces.
-    $namespaces = drupal_classloader()->getNamespaces();
-    foreach ($namespaces as $ns => $namespace_dirs) {
-
-      // OS-Safe directory separators.
-      $ns = str_replace('\\', DIRECTORY_SEPARATOR, $ns);
-
-      foreach ($namespace_dirs as $dir) {
-        // Check for the pre-determined directory structure to find plugins.
-        $prefix = implode(DIRECTORY_SEPARATOR, array(
-          $ns,
-          'Plugin',
-          $this->owner,
-          $this->type
-        ));
-        $dir .= DIRECTORY_SEPARATOR . $prefix;
-
-        // If the directory structure exists, look for classes.
-        if (file_exists($dir)) {
-          $directories = new DirectoryIterator($dir);
-          foreach ($directories as $fileinfo) {
-            // @todo Once core requires 5.3.6, use $fileinfo->getExtension().
-            if (pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION) == 'php') {
-              $class = str_replace(
-                DIRECTORY_SEPARATOR,
-                '\\',
-                $prefix . DIRECTORY_SEPARATOR . $fileinfo->getBasename('.php')
-              );
-
-              // The filename is already known, so there is no need to find the
-              // file. However, StaticReflectionParser needs a finder, so use a
-              // mock version.
-              $finder = MockFileFinder::create($fileinfo->getPathName());
-              $parser = new StaticReflectionParser($class, $finder);
-
-              if ($annotation = $reader->getClassAnnotation($parser->getReflectionClass(), 'Drupal\Core\Annotation\Plugin')) {
-                // AnnotationInterface::get() returns the array definition
-                // instead of requiring us to work with the annotation object.
-                $definition = $annotation->get();
-                $definition['class'] = $class;
-                $definitions[$definition['id']] = $definition;
-              }
-            }
-          }
-        }
-      }
-    }
-    return $definitions;
+  protected function getDirectoryStructure($namespace) {
+    return array(
+      $namespace,
+      'Plugin',
+      $this->owner,
+      $this->type,
+    );
   }
 
 }
diff --git a/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php b/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscoveryBase.php
similarity index 85%
copy from core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php
copy to core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscoveryBase.php
index bd89a92..f9ce4e2 100644
--- a/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscovery.php
+++ b/core/lib/Drupal/Core/Plugin/Discovery/AnnotatedClassDiscoveryBase.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Definition of Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery.
+ * Definition of Drupal\Core\Plugin\Discovery\AnnotatedClassDiscoveryBase.
  */
 
 namespace Drupal\Core\Plugin\Discovery;
@@ -18,14 +18,21 @@
 /**
  * Defines a discovery mechanism to find annotated plugins in PSR-0 namespaces.
  */
-class AnnotatedClassDiscovery implements DiscoveryInterface {
+abstract class AnnotatedClassDiscoveryBase implements DiscoveryInterface {
 
   /**
-   * Constructs an AnnotatedClassDiscovery object.
+   * Determines the directory structure under which annotated classes are found.
+   *
+   * @param string $namespace
+   *   The base namespace for this annotated class.
+   *
+   * @return array
+   *   An array whose values are parts of the directory structure.
    */
-  function __construct($owner, $type) {
-    $this->owner = $owner;
-    $this->type = $type;
+  protected function getDirectoryStructure($namespace) {
+    return array(
+      $namespace,
+    );
   }
 
   /**
@@ -54,14 +61,9 @@ public function getDefinitions() {
       // OS-Safe directory separators.
       $ns = str_replace('\\', DIRECTORY_SEPARATOR, $ns);
 
+      $prefix = implode(DIRECTORY_SEPARATOR, $this->getDirectoryStructure($ns));
       foreach ($namespace_dirs as $dir) {
         // Check for the pre-determined directory structure to find plugins.
-        $prefix = implode(DIRECTORY_SEPARATOR, array(
-          $ns,
-          'Plugin',
-          $this->owner,
-          $this->type
-        ));
         $dir .= DIRECTORY_SEPARATOR . $prefix;
 
         // If the directory structure exists, look for classes.
diff --git a/core/lib/Drupal/Core/TypedData/AccessibleInterface.php b/core/lib/Drupal/Core/TypedData/AccessibleInterface.php
index d120584..39e4325 100644
--- a/core/lib/Drupal/Core/TypedData/AccessibleInterface.php
+++ b/core/lib/Drupal/Core/TypedData/AccessibleInterface.php
@@ -22,7 +22,7 @@
    *   - update
    *   - delete
    *   Defaults to 'view'.
-   * @param \Drupal\user\Plugin\Core\Entity\User $account
+   * @param \Drupal\user\EntityType\User $account
    *   (optional) The user for which to check access, or NULL to check access
    *   for the current user. Defaults to NULL.
    *
@@ -32,6 +32,6 @@
    *
    * @todo Don't depend on module level code.
    */
-  public function access($operation = 'view', \Drupal\user\Plugin\Core\Entity\User $account = NULL);
+  public function access($operation = 'view', \Drupal\user\EntityType\User $account = NULL);
 
 }
diff --git a/core/modules/book/book.admin.inc b/core/modules/book/book.admin.inc
index 27f5cae..2ca0ce1 100644
--- a/core/modules/book/book.admin.inc
+++ b/core/modules/book/book.admin.inc
@@ -5,7 +5,7 @@
  * Admin page callbacks for the book module.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Page callback: Returns an administrative overview of all books.
diff --git a/core/modules/book/book.module b/core/modules/book/book.module
index 062097a..032ddbe 100644
--- a/core/modules/book/book.module
+++ b/core/modules/book/book.module
@@ -5,7 +5,7 @@
  * Allows users to create and organize related content in an outline.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 use Drupal\Core\Template\Attribute;
 
 /**
diff --git a/core/modules/book/book.pages.inc b/core/modules/book/book.pages.inc
index ae79318..4f55795 100644
--- a/core/modules/book/book.pages.inc
+++ b/core/modules/book/book.pages.inc
@@ -5,7 +5,7 @@
  * User page callbacks for the book module.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 
diff --git a/core/modules/book/lib/Drupal/book/Tests/BookTest.php b/core/modules/book/lib/Drupal/book/Tests/BookTest.php
index 5f50fe8..e3bdf39 100644
--- a/core/modules/book/lib/Drupal/book/Tests/BookTest.php
+++ b/core/modules/book/lib/Drupal/book/Tests/BookTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\book\Tests;
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 use Drupal\simpletest\WebTestBase;
 
 class BookTest extends WebTestBase {
diff --git a/core/modules/breakpoint/breakpoint.module b/core/modules/breakpoint/breakpoint.module
index 07cbc42..4b81ea8 100644
--- a/core/modules/breakpoint/breakpoint.module
+++ b/core/modules/breakpoint/breakpoint.module
@@ -5,8 +5,8 @@
  * Manage breakpoints and breakpoint groups for responsive designs.
  */
 
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
-use Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroup;
+use Drupal\breakpoint\EntityType\Breakpoint;
+use Drupal\breakpoint\EntityType\BreakpointGroup;
 
 /**
  * Implements hook_help().
@@ -295,7 +295,7 @@ function breakpoint_get_module_media_queries($module) {
  * @param string $id
  *   The id of the breakpoint group to load.
  *
- * @return Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroup|false
+ * @return Drupal\breakpoint\EntityType\BreakpointGroup|false
  *   The breakpoint group, or FALSE if there is no entity with the given id.
  *
  * @todo Remove this in a follow-up issue.
@@ -311,7 +311,7 @@ function breakpoint_group_load($id) {
  * @param int $id
  *   The id of the breakpoint to load.
  *
- * @return Drupal\breakpoint\Plugin\Core\Entity\Breakpoint
+ * @return Drupal\breakpoint\EntityType\Breakpoint
  *   The entity object, or FALSE if there is no entity with the given id.
  *
  * @todo Remove this in a follow-up issue.
@@ -365,7 +365,7 @@ function breakpoint_select_options() {
  * @param string $source_type
  *   Either Breakpoint::SOURCE_TYPE_THEME or Breakpoint::SOURCE_TYPE_MODULE.
  *
- * @return Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroup
+ * @return Drupal\breakpoint\EntityType\BreakpointGroup
  *
  * @see _breakpoint_import_media_queries()
  * @see _breakpoint_import_breakpoint_groups()
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php b/core/modules/breakpoint/lib/Drupal/breakpoint/EntityType/Breakpoint.php
similarity index 98%
rename from core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php
rename to core/modules/breakpoint/lib/Drupal/breakpoint/EntityType/Breakpoint.php
index 7c7301d..69bab54 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/Breakpoint.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/EntityType/Breakpoint.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\breakpoint\Plugin\Core\Entity\Breakpoint.
+ * Definition of Drupal\breakpoint\EntityType\Breakpoint.
  */
 
-namespace Drupal\breakpoint\Plugin\Core\Entity;
+namespace Drupal\breakpoint\EntityType;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\breakpoint\InvalidBreakpointException;
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php b/core/modules/breakpoint/lib/Drupal/breakpoint/EntityType/BreakpointGroup.php
similarity index 96%
rename from core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php
rename to core/modules/breakpoint/lib/Drupal/breakpoint/EntityType/BreakpointGroup.php
index 2fe4227..d25a926 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Plugin/Core/Entity/BreakpointGroup.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/EntityType/BreakpointGroup.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroup.
+ * Definition of Drupal\breakpoint\EntityType\BreakpointGroup.
  */
 
-namespace Drupal\breakpoint\Plugin\Core\Entity;
+namespace Drupal\breakpoint\EntityType;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\breakpoint\InvalidBreakpointSourceException;
@@ -65,7 +65,7 @@ class BreakpointGroup extends ConfigEntityBase {
    * @var array
    *   Array containing all breakpoints of this group.
    *
-   * @see Drupal\breakpoint\Plugin\Core\Entity\Breakpoint
+   * @see Drupal\breakpoint\EntityType\Breakpoint
    */
   public $breakpoints = array();
 
@@ -86,7 +86,7 @@ class BreakpointGroup extends ConfigEntityBase {
    *     Breakpoint::SOURCE_TYPE_MODULE
    *     Breakpoint::SOURCE_TYPE_USER_DEFINED
    *
-   * @see Drupal\breakpoint\Plugin\Core\Entity\Breakpoint
+   * @see Drupal\breakpoint\EntityType\Breakpoint
    */
   public $sourceType = Breakpoint::SOURCE_TYPE_USER_DEFINED;
 
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointAPITest.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointAPITest.php
index f65b559..87b6103 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointAPITest.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointAPITest.php
@@ -7,7 +7,7 @@
 namespace Drupal\breakpoint\Tests;
 
 use Drupal\breakpoint\Tests\BreakpointsTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\Breakpoint;
 use Drupal\breakpoint\InvalidBreakpointNameException;
 use Drupal\breakpoint\InvalidBreakpointSourceException;
 use Drupal\breakpoint\InvalidBreakpointSourceTypeException;
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointCRUDTest.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointCRUDTest.php
index 37caff7..0c2bf05 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointCRUDTest.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointCRUDTest.php
@@ -7,7 +7,7 @@
 namespace Drupal\breakpoint\Tests;
 
 use Drupal\breakpoint\Tests\BreakpointTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\Breakpoint;
 
 /**
  * Tests for breakpoint CRUD operations.
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupAPITest.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupAPITest.php
index d2bc016..c1d5a94 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupAPITest.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupAPITest.php
@@ -7,8 +7,8 @@
 namespace Drupal\breakpoint\Tests;
 
 use Drupal\breakpoint\Tests\BreakpointsTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroup;
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\BreakpointGroup;
+use Drupal\breakpoint\EntityType\Breakpoint;
 use Drupal\breakpoint\InvalidBreakpointNameException;
 use Drupal\breakpoint\InvalidBreakpointSourceException;
 use Drupal\breakpoint\InvalidBreakpointSourceTypeException;
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupCRUDTest.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupCRUDTest.php
index 05eaeaf..45ad6cb 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupCRUDTest.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupCRUDTest.php
@@ -7,8 +7,8 @@
 namespace Drupal\breakpoint\Tests;
 
 use Drupal\breakpoint\Tests\BreakpointGroupTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroup;
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\BreakpointGroup;
+use Drupal\breakpoint\EntityType\Breakpoint;
 
 /**
  * Tests for breakpoint group CRUD operations.
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupTestBase.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupTestBase.php
index ee1e57d..cd75e49 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupTestBase.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointGroupTestBase.php
@@ -7,7 +7,7 @@
 namespace Drupal\breakpoint\Tests;
 
 use Drupal\simpletest\WebTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroup;
+use Drupal\breakpoint\EntityType\BreakpointGroup;
 
 /**
  * Base class for Breakpoint group tests.
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointMediaQueryTest.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointMediaQueryTest.php
index d0ee5fb..7546505 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointMediaQueryTest.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointMediaQueryTest.php
@@ -7,7 +7,7 @@
 namespace Drupal\breakpoint\Tests;
 
 use Drupal\simpletest\UnitTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\Breakpoint;
 use Drupal\breakpoint\InvalidBreakpointMediaQueryException;
 
 /**
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointTestBase.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointTestBase.php
index cca4d62..4d19a5d 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointTestBase.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointTestBase.php
@@ -7,7 +7,7 @@
 namespace Drupal\breakpoint\Tests;
 
 use Drupal\simpletest\WebTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\Breakpoint;
 
 /**
  * Base class for Breakpoint tests.
diff --git a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointThemeTest.php b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointThemeTest.php
index 0091300..3ad11c2 100644
--- a/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointThemeTest.php
+++ b/core/modules/breakpoint/lib/Drupal/breakpoint/Tests/BreakpointThemeTest.php
@@ -7,8 +7,8 @@
 namespace Drupal\breakpoint\Tests;
 
 use Drupal\breakpoint\Tests\BreakpointGroupTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\BreakpointGroup;
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\BreakpointGroup;
+use Drupal\breakpoint\EntityType\Breakpoint;
 
 /**
  * Test breakpoints provided by themes.
diff --git a/core/modules/comment/comment.admin.inc b/core/modules/comment/comment.admin.inc
index 26e9c8b..57c0d1d 100644
--- a/core/modules/comment/comment.admin.inc
+++ b/core/modules/comment/comment.admin.inc
@@ -5,7 +5,7 @@
  * Admin page callbacks for the Comment module.
  */
 
-use Drupal\comment\Plugin\Core\Entity\Comment;
+use Drupal\comment\EntityType\Comment;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 
 /**
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index e700723..e27ac33 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -9,8 +9,8 @@
  * book page, etc.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\node\EntityType\Node;
+use Drupal\file\EntityType\File;
 use Drupal\Core\Entity\EntityInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
@@ -76,7 +76,7 @@
  */
 const COMMENT_NODE_OPEN = 2;
 
-use Drupal\comment\Plugin\Core\Entity\Comment;
+use Drupal\comment\EntityType\Comment;
 
 /**
  * Implements hook_help().
diff --git a/core/modules/comment/comment.pages.inc b/core/modules/comment/comment.pages.inc
index 6263660..fe8e324 100644
--- a/core/modules/comment/comment.pages.inc
+++ b/core/modules/comment/comment.pages.inc
@@ -5,7 +5,7 @@
  * User page callbacks for the Comment module.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/EntityType/Comment.php
similarity index 95%
rename from core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
rename to core/modules/comment/lib/Drupal/comment/EntityType/Comment.php
index e0bbfd9..05c762b 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/EntityType/Comment.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\comment\Plugin\Core\Entity\Comment.
+ * Definition of Drupal\comment\EntityType\Comment.
  */
 
-namespace Drupal\comment\Plugin\Core\Entity;
+namespace Drupal\comment\EntityType;
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentTestBase.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentTestBase.php
index 902dbdd..3c9c4b2 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentTestBase.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentTestBase.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\comment\Tests;
 
-use Drupal\comment\Plugin\Core\Entity\Comment;
+use Drupal\comment\EntityType\Comment;
 use Drupal\simpletest\WebTestBase;
 
 /**
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
index 13f5a76..b8ee56a 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityListTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\config\Tests;
 
 use Drupal\simpletest\WebTestBase;
-use Drupal\config_test\Plugin\Core\Entity\ConfigTest;
+use Drupal\config_test\EntityType\ConfigTest;
 use Drupal\Core\Entity\EntityStorageControllerInterface;
 
 /**
diff --git a/core/modules/config/tests/config_test/config_test.module b/core/modules/config/tests/config_test/config_test.module
index 96d4aa0..a34abca 100644
--- a/core/modules/config/tests/config_test/config_test.module
+++ b/core/modules/config/tests/config_test/config_test.module
@@ -5,7 +5,7 @@
  * Provides Config module hook implementations for testing purposes.
  */
 
-use Drupal\config_test\Plugin\Core\Entity\ConfigTest;
+use Drupal\config_test\EntityType\ConfigTest;
 
 require_once dirname(__FILE__) . '/config_test.hooks.inc';
 
@@ -74,7 +74,7 @@ function config_test_config_import_delete($name, $new_config, $old_config) {
 /**
  * Entity URI callback.
  *
- * @param Drupal\config_test\Plugin\Core\Entity\ConfigTest $config_test
+ * @param Drupal\config_test\EntityType\ConfigTest $config_test
  *   A ConfigTest entity.
  */
 function config_test_uri(ConfigTest $config_test) {
@@ -151,7 +151,7 @@ function config_test_add_page() {
 /**
  * Page callback: Presents the ConfigTest edit form.
  *
- * @param Drupal\config_test\Plugin\Core\Entity\ConfigTest $config_test
+ * @param Drupal\config_test\EntityType\ConfigTest $config_test
  *   The ConfigTest object to edit.
  *
  * @return array
@@ -165,7 +165,7 @@ function config_test_edit_page(ConfigTest $config_test) {
 /**
  * Form constructor to delete a ConfigTest object.
  *
- * @param Drupal\config_test\Plugin\Core\Entity\ConfigTest $config_test
+ * @param Drupal\config_test\EntityType\ConfigTest $config_test
  *   The ConfigTest object to delete.
  */
 function config_test_delete_form($form, &$form_state, ConfigTest $config_test) {
@@ -197,4 +197,4 @@ function config_test_cache_flush() {
   $GLOBALS['hook_cache_flush'] = __FUNCTION__;
 
   return array();
-}
\ No newline at end of file
+}
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/EntityType/ConfigTest.php
similarity index 91%
rename from core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php
rename to core/modules/config/tests/config_test/lib/Drupal/config_test/EntityType/ConfigTest.php
index 8690b2a..d9e0854 100644
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTest.php
+++ b/core/modules/config/tests/config_test/lib/Drupal/config_test/EntityType/ConfigTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\config_test\Plugin\Core\Entity\ConfigTest.
+ * Definition of Drupal\config_test\EntityType\ConfigTest.
  */
 
-namespace Drupal\config_test\Plugin\Core\Entity;
+namespace Drupal\config_test\EntityType;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/contact/contact.admin.inc b/core/modules/contact/contact.admin.inc
index a3e63f6..b80fc17 100644
--- a/core/modules/contact/contact.admin.inc
+++ b/core/modules/contact/contact.admin.inc
@@ -5,7 +5,7 @@
  * Admin page callbacks for the Contact module.
  */
 
-use Drupal\contact\Plugin\Core\Entity\Category;
+use Drupal\contact\EntityType\Category;
 
 /**
  * Page callback: Lists contact categories.
@@ -37,7 +37,7 @@ function contact_category_add() {
 /**
  * Page callback: Presents the category edit form.
  *
- * @param Drupal\contact\Plugin\Core\Entity\Category $category
+ * @param Drupal\contact\EntityType\Category $category
  *   The contact category to edit.
  *
  * @return array
@@ -53,7 +53,7 @@ function contact_category_edit(Category $category) {
 /**
  * Page callback: Form constructor for the contact category deletion form.
  *
- * @param Drupal\contact\Plugin\Core\Entity\Category $category
+ * @param Drupal\contact\EntityType\Category $category
  *   The contact category to be deleted.
  *
  * @see contact_menu()
diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module
index 585f011..9cc57a0 100644
--- a/core/modules/contact/contact.module
+++ b/core/modules/contact/contact.module
@@ -5,7 +5,7 @@
  * Enables the use of personal and site-wide contact forms.
  */
 
-use Drupal\contact\Plugin\Core\Entity\Category;
+use Drupal\contact\EntityType\Category;
 
 /**
  * Implements hook_help().
@@ -210,7 +210,7 @@ function contact_config_import_delete($name, $new_config, $old_config) {
  * @param $id
  *   The ID of the contact category to load.
  *
- * @return Drupal\contact\Plugin\Core\Entity\Category|false
+ * @return Drupal\contact\EntityType\Category|false
  *   A Category object or FALSE if the requested $id does not exist.
  */
 function contact_category_load($id) {
@@ -220,7 +220,7 @@ function contact_category_load($id) {
 /**
  * Entity URI callback.
  *
- * @param Drupal\contact\Plugin\Core\Entity\Category $category
+ * @param Drupal\contact\EntityType\Category $category
  *   A contact category entity.
  *
  * @return array
diff --git a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php b/core/modules/contact/lib/Drupal/contact/EntityType/Category.php
similarity index 92%
rename from core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php
rename to core/modules/contact/lib/Drupal/contact/EntityType/Category.php
index c2d456b..e3f8b9a 100644
--- a/core/modules/contact/lib/Drupal/contact/Plugin/Core/Entity/Category.php
+++ b/core/modules/contact/lib/Drupal/contact/EntityType/Category.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\contact\Plugin\Core\Entity\Category.
+ * Definition of Drupal\contact\EntityType\Category.
  */
 
-namespace Drupal\contact\Plugin\Core\Entity;
+namespace Drupal\contact\EntityType;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/field/tests/modules/field_test/field_test.entity.inc b/core/modules/field/tests/modules/field_test/field_test.entity.inc
index b48f5cf..0190c56 100644
--- a/core/modules/field/tests/modules/field_test/field_test.entity.inc
+++ b/core/modules/field/tests/modules/field_test/field_test.entity.inc
@@ -6,7 +6,7 @@
  */
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\field_test\Plugin\Core\Entity\TestEntity;
+use Drupal\field_test\EntityType\TestEntity;
 
 /**
  * Implements hook_entity_info_alter().
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleKeyTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/BundleKeyTestEntity.php
similarity index 84%
rename from core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleKeyTestEntity.php
rename to core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/BundleKeyTestEntity.php
index 683bc48..009a15c 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleKeyTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/BundleKeyTestEntity.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\field_test\Plugin\Core\Entity\BundleKeyTestEntity.
+ * Contains Drupal\field_test\EntityType\BundleKeyTestEntity.
  */
 
-namespace Drupal\field_test\Plugin\Core\Entity;
+namespace Drupal\field_test\EntityType;
 
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/BundleTestEntity.php
similarity index 85%
rename from core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleTestEntity.php
rename to core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/BundleTestEntity.php
index b31258e..00dbc6f 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/BundleTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/BundleTestEntity.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\field_test\Plugin\Core\Entity\BundleTestEntity.
+ * Contains Drupal\field_test\EntityType\BundleTestEntity.
  */
 
-namespace Drupal\field_test\Plugin\Core\Entity;
+namespace Drupal\field_test\EntityType;
 
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/CacheableTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/CacheableTestEntity.php
similarity index 82%
rename from core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/CacheableTestEntity.php
rename to core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/CacheableTestEntity.php
index 12de950..4c89867 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/CacheableTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/CacheableTestEntity.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\field_test\Plugin\Core\Entity\CacheableTestEntity.
+ * Contains Drupal\field_test\EntityType\CacheableTestEntity.
  */
 
-namespace Drupal\field_test\Plugin\Core\Entity;
+namespace Drupal\field_test\EntityType;
 
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/LabelCallbackTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/LabelCallbackTestEntity.php
similarity index 84%
rename from core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/LabelCallbackTestEntity.php
rename to core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/LabelCallbackTestEntity.php
index cddde9e..4c21079 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/LabelCallbackTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/LabelCallbackTestEntity.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\field_test\Plugin\Core\Entity\LabelCallbackTestEntity.
+ * Contains Drupal\field_test\EntityType\LabelCallbackTestEntity.
  */
 
-namespace Drupal\field_test\Plugin\Core\Entity;
+namespace Drupal\field_test\EntityType;
 
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/LabelTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/LabelTestEntity.php
similarity index 86%
rename from core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/LabelTestEntity.php
rename to core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/LabelTestEntity.php
index 7e2bdb2..c099202 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/LabelTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/LabelTestEntity.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\field_test\Plugin\Core\Entity\LabelTestEntity.
+ * Contains Drupal\field_test\EntityType\LabelTestEntity.
  */
 
-namespace Drupal\field_test\Plugin\Core\Entity;
+namespace Drupal\field_test\EntityType;
 
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/NoLabelTestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/NoLabelTestEntity.php
similarity index 86%
rename from core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/NoLabelTestEntity.php
rename to core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/NoLabelTestEntity.php
index 4802e5e..1678d7a 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/NoLabelTestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/NoLabelTestEntity.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\field_test\Plugin\Core\Entity\NoLabelTestEntity.
+ * Contains Drupal\field_test\EntityType\NoLabelTestEntity.
  */
 
-namespace Drupal\field_test\Plugin\Core\Entity;
+namespace Drupal\field_test\EntityType;
 
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
diff --git a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/TestEntity.php b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/TestEntity.php
similarity index 92%
rename from core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/TestEntity.php
rename to core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/TestEntity.php
index a5911e9..4fc4e37 100644
--- a/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/Plugin/Core/Entity/TestEntity.php
+++ b/core/modules/field/tests/modules/field_test/lib/Drupal/field_test/EntityType/TestEntity.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\field_test\Plugin\Core\Entity\TestEntity.
+ * Contains Drupal\field_test\EntityType\TestEntity.
  */
 
-namespace Drupal\field_test\Plugin\Core\Entity;
+namespace Drupal\field_test\EntityType;
 
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
index 7ea0e46..d4a7303 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\field_ui\Tests;
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Tests the functionality of the 'Manage display' screens.
diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index fd2b269..856413f 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -5,7 +5,7 @@
  * Defines a "managed_file" Form API field and a "file" field for Field module.
  */
 
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\file\EntityType\File;
 use Drupal\Core\Template\Attribute;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Drupal\file\FileUsage\DatabaseFileUsageBackend;
diff --git a/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php b/core/modules/file/lib/Drupal/file/EntityType/File.php
similarity index 95%
rename from core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
rename to core/modules/file/lib/Drupal/file/EntityType/File.php
index bc54514..38aa105 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
+++ b/core/modules/file/lib/Drupal/file/EntityType/File.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\file\Plugin\Core\Entity\File.
+ * Definition of Drupal\file\EntityType\File.
  */
 
-namespace Drupal\file\Plugin\Core\Entity;
+namespace Drupal\file\EntityType;
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
diff --git a/core/modules/file/lib/Drupal/file/FileUsage/DatabaseFileUsageBackend.php b/core/modules/file/lib/Drupal/file/FileUsage/DatabaseFileUsageBackend.php
index eaca4bf..b293b58 100644
--- a/core/modules/file/lib/Drupal/file/FileUsage/DatabaseFileUsageBackend.php
+++ b/core/modules/file/lib/Drupal/file/FileUsage/DatabaseFileUsageBackend.php
@@ -9,7 +9,7 @@
 
 use Drupal\Core\Database\Connection;
 use Drupal\Core\Database\DatabaseExceptionWrapper;
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\file\EntityType\File;
 
 /**
  * Defines the database file usage backend. This is the default Drupal backend.
diff --git a/core/modules/file/lib/Drupal/file/FileUsage/FileUsageBase.php b/core/modules/file/lib/Drupal/file/FileUsage/FileUsageBase.php
index 9ba2ac7..b891920 100644
--- a/core/modules/file/lib/Drupal/file/FileUsage/FileUsageBase.php
+++ b/core/modules/file/lib/Drupal/file/FileUsage/FileUsageBase.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\file\FileUsage;
 
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\file\EntityType\File;
 
 /**
  * Defines the base class for database file usage backend.
diff --git a/core/modules/file/lib/Drupal/file/FileUsage/FileUsageInterface.php b/core/modules/file/lib/Drupal/file/FileUsage/FileUsageInterface.php
index d9a248d..c8476d9 100644
--- a/core/modules/file/lib/Drupal/file/FileUsage/FileUsageInterface.php
+++ b/core/modules/file/lib/Drupal/file/FileUsage/FileUsageInterface.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\file\FileUsage;
 
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\file\EntityType\File;
 
 /**
  * File usage backend interface.
diff --git a/core/modules/file/tests/file_module_test.module b/core/modules/file/tests/file_module_test.module
index b962e2a..699b9f2 100644
--- a/core/modules/file/tests/file_module_test.module
+++ b/core/modules/file/tests/file_module_test.module
@@ -6,7 +6,7 @@
  */
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\file\EntityType\File;
 
 /**
  * Implements hook_menu().
diff --git a/core/modules/file/tests/file_test/file_test.module b/core/modules/file/tests/file_test/file_test.module
index d4a4359..b2679d7 100644
--- a/core/modules/file/tests/file_test/file_test.module
+++ b/core/modules/file/tests/file_test/file_test.module
@@ -8,7 +8,7 @@
  * calling file_test_get_calls() or file_test_set_return().
  */
 
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\file\EntityType\File;
 
 const FILE_URL_TEST_CDN_1 = 'http://cdn1.example.com';
 const FILE_URL_TEST_CDN_2 = 'http://cdn2.example.com';
diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module
index 05960a0..f7106b6 100644
--- a/core/modules/forum/forum.module
+++ b/core/modules/forum/forum.module
@@ -5,8 +5,8 @@
  * Provides discussion forums.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
-use Drupal\taxonomy\Plugin\Core\Entity\Term;
+use Drupal\node\EntityType\Node;
+use Drupal\taxonomy\EntityType\Term;
 
 /**
  * Implements hook_help().
diff --git a/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php b/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
index f56cfbb..1b7e3d8 100644
--- a/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
+++ b/core/modules/forum/lib/Drupal/forum/Tests/ForumTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\forum\Tests;
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 use Drupal\simpletest\WebTestBase;
 
 /**
diff --git a/core/modules/history/history.module b/core/modules/history/history.module
index 45027fe..da66d87 100644
--- a/core/modules/history/history.module
+++ b/core/modules/history/history.module
@@ -9,7 +9,7 @@
  * - Generic helper for node_mark().
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Entities changed before this time are always shown as read.
diff --git a/core/modules/image/image.api.php b/core/modules/image/image.api.php
index c11347f..bb099a2 100644
--- a/core/modules/image/image.api.php
+++ b/core/modules/image/image.api.php
@@ -74,7 +74,7 @@ function hook_image_effect_info_alter(&$effects) {
  * be cleared using this hook. This hook is called whenever a style is updated,
  * deleted, or any effect associated with the style is update or deleted.
  *
- * @param Drupal\image\Plugin\Core\Entity\ImageStyle $style
+ * @param Drupal\image\EntityType\ImageStyle $style
  *   The image style array that is being flushed.
  */
 function hook_image_style_flush($style) {
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index c763dc6..cfe943a 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -9,8 +9,8 @@
 use Symfony\Component\HttpFoundation\StreamedResponse;
 use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 use Drupal\Component\Uuid\Uuid;
-use Drupal\file\Plugin\Core\Entity\File;
-use Drupal\image\Plugin\Core\Entity\ImageStyle;
+use Drupal\file\EntityType\File;
+use Drupal\image\EntityType\ImageStyle;
 
 /**
  * Image style constant for user presets in the database.
@@ -597,7 +597,7 @@ function image_image_style_update($style) {
 /**
  * Delete an image style.
  *
- * @param Drupal\image\Plugin\Core\Entity\ImageStyle $style
+ * @param Drupal\image\EntityType\ImageStyle $style
  *   An image style array.
  * @param $replacement_style_name
  *   (optional) When deleting a style, specify a replacement style name so
diff --git a/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php b/core/modules/image/lib/Drupal/image/EntityType/ImageStyle.php
similarity index 90%
rename from core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php
rename to core/modules/image/lib/Drupal/image/EntityType/ImageStyle.php
index 363fbd8..558b36b 100644
--- a/core/modules/image/lib/Drupal/image/Plugin/Core/Entity/ImageStyle.php
+++ b/core/modules/image/lib/Drupal/image/EntityType/ImageStyle.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\image\Plugin\Core\Entity\ImageStyle.
+ * Definition of Drupal\image\EntityType\ImageStyle.
  */
 
-namespace Drupal\image\Plugin\Core\Entity;
+namespace Drupal\image\EntityType;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/Display.php b/core/modules/layout/lib/Drupal/layout/EntityType/Display.php
similarity index 97%
rename from core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/Display.php
rename to core/modules/layout/lib/Drupal/layout/EntityType/Display.php
index d954832..7834a4b 100644
--- a/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/Display.php
+++ b/core/modules/layout/lib/Drupal/layout/EntityType/Display.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\layout\Plugin\Core\Entity\Display.
+ * Definition of Drupal\layout\EntityType\Display.
  */
 
-namespace Drupal\layout\Plugin\Core\Entity;
+namespace Drupal\layout\EntityType;
 
 use Drupal\layout\Config\DisplayBase;
 use Drupal\layout\Config\BoundDisplayInterface;
diff --git a/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/UnboundDisplay.php b/core/modules/layout/lib/Drupal/layout/EntityType/UnboundDisplay.php
similarity index 93%
rename from core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/UnboundDisplay.php
rename to core/modules/layout/lib/Drupal/layout/EntityType/UnboundDisplay.php
index 5450e2c..a848f30 100644
--- a/core/modules/layout/lib/Drupal/layout/Plugin/Core/Entity/UnboundDisplay.php
+++ b/core/modules/layout/lib/Drupal/layout/EntityType/UnboundDisplay.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\layout\Plugin\Core\Entity\Display.
+ * Definition of Drupal\layout\EntityType\Display.
  */
 
-namespace Drupal\layout\Plugin\Core\Entity;
+namespace Drupal\layout\EntityType;
 
 use Drupal\layout\Config\DisplayBase;
 use Drupal\layout\Config\BoundDisplayInterface;
diff --git a/core/modules/layout/lib/Drupal/layout/Tests/DisplayInternalLogicTest.php b/core/modules/layout/lib/Drupal/layout/Tests/DisplayInternalLogicTest.php
index 07a77bf..9d27a04 100644
--- a/core/modules/layout/lib/Drupal/layout/Tests/DisplayInternalLogicTest.php
+++ b/core/modules/layout/lib/Drupal/layout/Tests/DisplayInternalLogicTest.php
@@ -8,8 +8,8 @@
 namespace Drupal\layout\Tests;
 
 use Drupal\simpletest\WebTestBase;
-use Drupal\layout\Plugin\Core\Entity\Display;
-use Drupal\layout\Plugin\Core\Entity\UnboundDisplay;
+use Drupal\layout\EntityType\Display;
+use Drupal\layout\EntityType\UnboundDisplay;
 
 /**
  * Tests the API and internal logic offered by Displays.
@@ -26,21 +26,21 @@ class DisplayInternalLogicTest extends WebTestBase {
   /**
    * The twocol test display.
    *
-   * @var \Drupal\layout\Plugin\Core\Entity\Display
+   * @var \Drupal\layout\EntityType\Display
    */
   public $twocol;
 
   /**
    * The onecol test display.
    *
-   * @var \Drupal\layout\Plugin\Core\Entity\Display
+   * @var \Drupal\layout\EntityType\Display
    */
   public $onecol;
 
   /**
    * The unbound test display.
    *
-   * @var \Drupal\layout\Plugin\Core\Entity\UnboundDisplay
+   * @var \Drupal\layout\EntityType\UnboundDisplay
    */
   public $unbound;
 
diff --git a/core/modules/menu/menu.module b/core/modules/menu/menu.module
index 73e4380..694017d 100644
--- a/core/modules/menu/menu.module
+++ b/core/modules/menu/menu.module
@@ -11,7 +11,7 @@
  * URLs to be added to the main site navigation menu.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 use Symfony\Component\HttpFoundation\JsonResponse;
 
diff --git a/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php b/core/modules/node/lib/Drupal/node/EntityType/Node.php
similarity index 97%
rename from core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
rename to core/modules/node/lib/Drupal/node/EntityType/Node.php
index 1fd8fc8..84f1688 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/EntityType/Node.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\node\Plugin\Core\Entity\Node.
+ * Definition of Drupal\node\EntityType\Node.
  */
 
-namespace Drupal\node\Plugin\Core\Entity;
+namespace Drupal\node\EntityType;
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 08d7810..df904ac 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -16,8 +16,8 @@
 use Drupal\Core\Database\Query\SelectInterface;
 use Drupal\Core\Datetime\DrupalDateTime;
 use Drupal\Core\Template\Attribute;
-use Drupal\node\Plugin\Core\Entity\Node;
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\node\EntityType\Node;
+use Drupal\file\EntityType\File;
 use Drupal\Core\Entity\EntityInterface;
 
 /**
diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc
index a71f5eb..78303c2 100644
--- a/core/modules/node/node.pages.inc
+++ b/core/modules/node/node.pages.inc
@@ -9,7 +9,7 @@
  * @see node_menu()
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Page callback: Presents the node editing form.
diff --git a/core/modules/node/tests/modules/node_access_test/node_access_test.module b/core/modules/node/tests/modules/node_access_test/node_access_test.module
index 4efee88..a61ff8c 100644
--- a/core/modules/node/tests/modules/node_access_test/node_access_test.module
+++ b/core/modules/node/tests/modules/node_access_test/node_access_test.module
@@ -9,7 +9,7 @@
  * a special 'node test view' permission.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Implements hook_node_grants().
diff --git a/core/modules/node/tests/modules/node_test/node_test.module b/core/modules/node/tests/modules/node_test/node_test.module
index 5e0a7ac..2da9d7e 100644
--- a/core/modules/node/tests/modules/node_test/node_test.module
+++ b/core/modules/node/tests/modules/node_test/node_test.module
@@ -8,7 +8,7 @@
  * interaction with the Node module.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Implements hook_node_load().
diff --git a/core/modules/node/tests/modules/node_test_exception/node_test_exception.module b/core/modules/node/tests/modules/node_test_exception/node_test_exception.module
index 359af1f..6325a78 100644
--- a/core/modules/node/tests/modules/node_test_exception/node_test_exception.module
+++ b/core/modules/node/tests/modules/node_test_exception/node_test_exception.module
@@ -5,7 +5,7 @@
  * A module implementing node related hooks to test API interaction.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Implements hook_node_insert().
diff --git a/core/modules/path/path.module b/core/modules/path/path.module
index dcbe3be..dbf6d37 100644
--- a/core/modules/path/path.module
+++ b/core/modules/path/path.module
@@ -5,9 +5,9 @@
  * Enables users to rename URLs.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
-use Drupal\taxonomy\Plugin\Core\Entity\Term;
+use Drupal\taxonomy\EntityType\Term;
 
 /**
  * Implements hook_help().
diff --git a/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php b/core/modules/picture/lib/Drupal/picture/EntityType/PictureMapping.php
similarity index 97%
rename from core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php
rename to core/modules/picture/lib/Drupal/picture/EntityType/PictureMapping.php
index 2710303..44b8c4a 100644
--- a/core/modules/picture/lib/Drupal/picture/Plugin/Core/Entity/PictureMapping.php
+++ b/core/modules/picture/lib/Drupal/picture/EntityType/PictureMapping.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\picture\PictureMapping.
+ * Definition of Drupal\picture\EntityType\PictureMapping.
  */
 
-namespace Drupal\picture\Plugin\Core\Entity;
+namespace Drupal\picture\EntityType;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/picture/lib/Drupal/picture/Tests/PictureAdminUITest.php b/core/modules/picture/lib/Drupal/picture/Tests/PictureAdminUITest.php
index 114e30c..d4306e3 100644
--- a/core/modules/picture/lib/Drupal/picture/Tests/PictureAdminUITest.php
+++ b/core/modules/picture/lib/Drupal/picture/Tests/PictureAdminUITest.php
@@ -8,7 +8,7 @@
 namespace Drupal\picture\Tests;
 
 use Drupal\simpletest\WebTestBase;
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\Breakpoint;
 
 /**
  * Tests for breakpoint sets admin interface.
diff --git a/core/modules/picture/lib/Drupal/picture/Tests/PictureFieldDisplayTest.php b/core/modules/picture/lib/Drupal/picture/Tests/PictureFieldDisplayTest.php
index 69b0231..79a8cc3 100644
--- a/core/modules/picture/lib/Drupal/picture/Tests/PictureFieldDisplayTest.php
+++ b/core/modules/picture/lib/Drupal/picture/Tests/PictureFieldDisplayTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\picture\Tests;
 
-use Drupal\breakpoint\Plugin\Core\Entity\Breakpoint;
+use Drupal\breakpoint\EntityType\Breakpoint;
 use Drupal\image\Tests\ImageFieldTestBase;
 
 /**
diff --git a/core/modules/picture/picture.module b/core/modules/picture/picture.module
index e5a66dd..aae3eed 100644
--- a/core/modules/picture/picture.module
+++ b/core/modules/picture/picture.module
@@ -5,7 +5,7 @@
  * Picture display formatter for image fields.
  */
 
-use Drupal\picture\Plugin\Core\Entity\PictureMapping;
+use Drupal\picture\EntityType\PictureMapping;
 use \Drupal\Core\Template\Attribute;
 
 /**
diff --git a/core/modules/poll/poll.module b/core/modules/poll/poll.module
index d3f8d3a..500ef70 100644
--- a/core/modules/poll/poll.module
+++ b/core/modules/poll/poll.module
@@ -5,7 +5,7 @@
  * Collects votes on different topics in the form of multiple choice questions.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Implements hook_help().
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/TrackerAttributesTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/TrackerAttributesTest.php
index b7771c6..46de22a 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/TrackerAttributesTest.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/TrackerAttributesTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\rdf\Tests;
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 use Drupal\simpletest\WebTestBase;
 
 /**
diff --git a/core/modules/search/search.module b/core/modules/search/search.module
index 866536e..da8da43 100644
--- a/core/modules/search/search.module
+++ b/core/modules/search/search.module
@@ -5,7 +5,7 @@
  * Enables site-wide keyword searching.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Matches all 'N' Unicode character classes (numbers)
diff --git a/core/modules/statistics/statistics.module b/core/modules/statistics/statistics.module
index a359981..b5d6d75 100644
--- a/core/modules/statistics/statistics.module
+++ b/core/modules/statistics/statistics.module
@@ -5,7 +5,7 @@
  * Logs and displays access statistics for a site.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Implements hook_help().
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
index 1b40c2d..d199bb2 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
@@ -10,7 +10,7 @@
 use Drupal\Core\Language\Language;
 use Drupal\Core\TypedData\AccessibleInterface;
 use Drupal\simpletest\WebTestBase;
-use Drupal\user\Plugin\Core\Entity\User;
+use Drupal\user\EntityType\User;
 
 /**
  * Tests the entity access controller.
diff --git a/core/modules/system/tests/modules/bundle_test/lib/Drupal/bundle_test/TestFileUsage.php b/core/modules/system/tests/modules/bundle_test/lib/Drupal/bundle_test/TestFileUsage.php
index 0ee5f2d..463b8c4 100644
--- a/core/modules/system/tests/modules/bundle_test/lib/Drupal/bundle_test/TestFileUsage.php
+++ b/core/modules/system/tests/modules/bundle_test/lib/Drupal/bundle_test/TestFileUsage.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\bundle_test;
 
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\file\EntityType\File;
 
 class TestFileUsage extends FileUsageBase {
 
diff --git a/core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/Plugin/Core/Entity/EntityCacheTest.php b/core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/EntityType/EntityCacheTest.php
similarity index 64%
rename from core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/Plugin/Core/Entity/EntityCacheTest.php
rename to core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/EntityType/EntityCacheTest.php
index c0fbea4..c339299 100644
--- a/core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/Plugin/Core/Entity/EntityCacheTest.php
+++ b/core/modules/system/tests/modules/entity_cache_test_dependency/lib/Drupal/entity_cache_test_dependency/EntityType/EntityCacheTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains Drupal\entity_cache_test_dependency\Plugin\Core\Entity\EntityCacheTest.
+ * Contains Drupal\entity_cache_test_dependency\EntityType\EntityCacheTest.
  */
 
-namespace Drupal\entity_cache_test_dependency\Plugin\Core\Entity;
+namespace Drupal\entity_cache_test_dependency\EntityType;
 
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/system/tests/modules/entity_test/entity_test.module b/core/modules/system/tests/modules/entity_test/entity_test.module
index 403c1b9..e77405f 100644
--- a/core/modules/system/tests/modules/entity_test/entity_test.module
+++ b/core/modules/system/tests/modules/entity_test/entity_test.module
@@ -5,7 +5,7 @@
  * Test module for the entity API providing an entity type for testing.
  */
 
-use Drupal\entity_test\Plugin\Core\Entity\EntityTest;
+use Drupal\entity_test\EntityType\EntityTest;
 
 
 /**
@@ -108,7 +108,7 @@ function entity_test_edit(EntityTest $entity) {
  * @param bool $reset
  *   A boolean indicating that the internal cache should be reset.
  *
- * @return Drupal\entity_test\Plugin\Core\Entity\EntityTest
+ * @return Drupal\entity_test\EntityType\EntityTest
  *   The loaded entity object, or FALSE if the entity cannot be loaded.
  */
 function entity_test_load($id, $reset = FALSE) {
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestAccessController.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestAccessController.php
index d79fa68..6e02471 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestAccessController.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestAccessController.php
@@ -9,7 +9,7 @@
 
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityAccessControllerInterface;
-use Drupal\user\Plugin\Core\Entity\User;
+use Drupal\user\EntityType\User;
 
 /**
  * Defines the access controller for the test entity type.
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTest.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityType/EntityTest.php
similarity index 95%
rename from core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTest.php
rename to core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityType/EntityTest.php
index 9b4d368..2a7f312 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Plugin/Core/Entity/EntityTest.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityType/EntityTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\entity_test\Plugin\Core\Entity\EntityTest.
+ * Definition of Drupal\entity_test\EntityType\EntityTest.
  */
 
-namespace Drupal\entity_test\Plugin\Core\Entity;
+namespace Drupal\entity_test\EntityType;
 
 use Drupal\Core\Entity\EntityNG;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/system/tests/modules/taxonomy_test/taxonomy_test.module b/core/modules/system/tests/modules/taxonomy_test/taxonomy_test.module
index b2e3adb..b8d18d7 100644
--- a/core/modules/system/tests/modules/taxonomy_test/taxonomy_test.module
+++ b/core/modules/system/tests/modules/taxonomy_test/taxonomy_test.module
@@ -7,7 +7,7 @@
  * @see Drupal\taxonomy\Tests\TaxonomyHooksTestCase::testTaxonomyTermHooks()
  */
 
-use Drupal\taxonomy\Plugin\Core\Entity\Term;
+use Drupal\taxonomy\EntityType\Term;
 
 /**
  * Implements hook_taxonomy_term_load().
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/EntityType/Term.php
similarity index 96%
rename from core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
rename to core/modules/taxonomy/lib/Drupal/taxonomy/EntityType/Term.php
index 51468af..0ebc2c1 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/EntityType/Term.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\taxonomy\Plugin\Core\Entity\Term.
+ * Definition of Drupal\taxonomy\EntityType\Term.
  */
 
-namespace Drupal\taxonomy\Plugin\Core\Entity;
+namespace Drupal\taxonomy\EntityType;
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php b/core/modules/taxonomy/lib/Drupal/taxonomy/EntityType/Vocabulary.php
similarity index 93%
rename from core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php
rename to core/modules/taxonomy/lib/Drupal/taxonomy/EntityType/Vocabulary.php
index 0ecbae8..ec0ca14 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Vocabulary.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/EntityType/Vocabulary.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\taxonomy\Plugin\Core\Entity\Vocabulary.
+ * Definition of Drupal\taxonomy\EntityType\Vocabulary.
  */
 
-namespace Drupal\taxonomy\Plugin\Core\Entity;
+namespace Drupal\taxonomy\EntityType;
 
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/taxonomy/taxonomy.admin.inc b/core/modules/taxonomy/taxonomy.admin.inc
index 1a177ed..78cc884 100644
--- a/core/modules/taxonomy/taxonomy.admin.inc
+++ b/core/modules/taxonomy/taxonomy.admin.inc
@@ -5,8 +5,8 @@
  * Administrative page callbacks for the taxonomy module.
  */
 
-use Drupal\taxonomy\Plugin\Core\Entity\Term;
-use Drupal\taxonomy\Plugin\Core\Entity\Vocabulary;
+use Drupal\taxonomy\EntityType\Term;
+use Drupal\taxonomy\EntityType\Vocabulary;
 
 /**
  * Form builder to list and manage vocabularies.
@@ -131,7 +131,7 @@ function taxonomy_vocabulary_add() {
  * Display a tree of all the terms in a vocabulary, with options to edit
  * each one. The form is made drag and drop by the theme function.
  *
- * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
+ * @param Drupal\taxonomy\EntityType\Vocabulary $vocabulary
  *   The taxonomy vocabulary entity to list terms for.
  *
  * @ingroup forms
diff --git a/core/modules/taxonomy/taxonomy.api.php b/core/modules/taxonomy/taxonomy.api.php
index 1eb6bf2..d08b17d 100644
--- a/core/modules/taxonomy/taxonomy.api.php
+++ b/core/modules/taxonomy/taxonomy.api.php
@@ -34,10 +34,10 @@ function hook_taxonomy_vocabulary_load(array $vocabularies) {
  * Modules implementing this hook can act on the vocabulary object before it is
  * inserted or updated.
  *
- * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
+ * @param Drupal\taxonomy\EntityType\Vocabulary $vocabulary
  *   A taxonomy vocabulary entity.
  */
-function hook_taxonomy_vocabulary_presave(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
+function hook_taxonomy_vocabulary_presave(Drupal\taxonomy\EntityType\Vocabulary $vocabulary) {
   $vocabulary->foo = 'bar';
 }
 
@@ -47,10 +47,10 @@ function hook_taxonomy_vocabulary_presave(Drupal\taxonomy\Plugin\Core\Entity\Voc
  * Modules implementing this hook can act on the vocabulary object when saved
  * to the database.
  *
- * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
+ * @param Drupal\taxonomy\EntityType\Vocabulary $vocabulary
  *   A taxonomy vocabulary entity.
  */
-function hook_taxonomy_vocabulary_insert(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
+function hook_taxonomy_vocabulary_insert(Drupal\taxonomy\EntityType\Vocabulary $vocabulary) {
   if ($vocabulary->synonyms) {
     variable_set('taxonomy_' . $vocabulary->vid . '_synonyms', TRUE);
   }
@@ -61,10 +61,10 @@ function hook_taxonomy_vocabulary_insert(Drupal\taxonomy\Plugin\Core\Entity\Voca
  *
  * Modules implementing this hook can act on the vocabulary object when updated.
  *
- * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
+ * @param Drupal\taxonomy\EntityType\Vocabulary $vocabulary
  *   A taxonomy vocabulary entity.
  */
-function hook_taxonomy_vocabulary_update(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
+function hook_taxonomy_vocabulary_update(Drupal\taxonomy\EntityType\Vocabulary $vocabulary) {
   $status = $vocabulary->synonyms ? TRUE : FALSE;
   if ($vocabulary->synonyms) {
     variable_set('taxonomy_' . $vocabulary->vid . '_synonyms', $status);
@@ -78,13 +78,13 @@ function hook_taxonomy_vocabulary_update(Drupal\taxonomy\Plugin\Core\Entity\Voca
  * field_attach_delete_bundle() is called and before the vocabulary is actually
  * removed from the database.
  *
- * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
+ * @param Drupal\taxonomy\EntityType\Vocabulary $vocabulary
  *   The taxonomy vocabulary entity that is about to be deleted.
  *
  * @see hook_taxonomy_vocabulary_delete()
  * @see taxonomy_vocabulary_delete()
  */
-function hook_taxonomy_vocabulary_predelete(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
+function hook_taxonomy_vocabulary_predelete(Drupal\taxonomy\EntityType\Vocabulary $vocabulary) {
   if (variable_get('taxonomy_' . $vocabulary->vid . '_synonyms', FALSE)) {
     variable_del('taxonomy_' . $vocabulary->vid . '_synonyms');
   }
@@ -97,13 +97,13 @@ function hook_taxonomy_vocabulary_predelete(Drupal\taxonomy\Plugin\Core\Entity\V
  * field_attach_delete_bundle() has been called and after the vocabulary has
  * been removed from the database.
  *
- * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
+ * @param Drupal\taxonomy\EntityType\Vocabulary $vocabulary
  *   The taxonomy vocabulary entity that has been deleted.
  *
  * @see hook_taxonomy_vocabulary_predelete()
  * @see taxonomy_vocabulary_delete()
  */
-function hook_taxonomy_vocabulary_delete(Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary) {
+function hook_taxonomy_vocabulary_delete(Drupal\taxonomy\EntityType\Vocabulary $vocabulary) {
   if (variable_get('taxonomy_' . $vocabulary->vid . '_synonyms', FALSE)) {
     variable_del('taxonomy_' . $vocabulary->vid . '_synonyms');
   }
diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module
index d8ea5b7..80e39b3 100644
--- a/core/modules/taxonomy/taxonomy.module
+++ b/core/modules/taxonomy/taxonomy.module
@@ -5,9 +5,9 @@
  * Enables the organization of content into categories.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
-use Drupal\taxonomy\Plugin\Core\Entity\Term;
-use Drupal\taxonomy\Plugin\Core\Entity\Vocabulary;
+use Drupal\node\EntityType\Node;
+use Drupal\taxonomy\EntityType\Term;
+use Drupal\taxonomy\EntityType\Vocabulary;
 use Drupal\Core\Entity\EntityInterface;
 
 /**
@@ -392,7 +392,7 @@ function taxonomy_term_access($op, $term) {
 /**
  * Saves a vocabulary.
  *
- * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
+ * @param Drupal\taxonomy\EntityType\Vocabulary $vocabulary
  *   The taxonomy vocabulary entity to be saved.
  */
 function taxonomy_vocabulary_save(Vocabulary $vocabulary) {
@@ -456,7 +456,7 @@ function taxonomy_taxonomy_vocabulary_update(Vocabulary $vocabulary) {
  * term has multiple parents then the vocabulary will be given a hierarchy of
  * TAXONOMY_HIERARCHY_MULTIPLE.
  *
- * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary
+ * @param Drupal\taxonomy\EntityType\Vocabulary $vocabulary
  *   A taxonomy vocabulary entity.
  * @param $changed_term
  *   An array of the term structure that was updated.
@@ -921,7 +921,7 @@ function taxonomy_vocabulary_load_multiple(array $vids = NULL) {
  * @param int $vid
  *   The vocabulary's ID.
  *
- * @return Drupal\taxonomy\Plugin\Core\Entity\Vocabulary|false
+ * @return Drupal\taxonomy\EntityType\Vocabulary|false
  *   The taxonomy vocabulary entity, if exists, FALSE otherwise. Results are
  *   statically cached.
  *
@@ -937,7 +937,7 @@ function taxonomy_vocabulary_load($vid) {
  * @param $name
  *   The vocabulary's machine name.
  *
- * @return Drupal\taxonomy\Plugin\Core\Entity\Vocabulary|false
+ * @return Drupal\taxonomy\EntityType\Vocabulary|false
  *   The taxonomy vocabulary entity, if exists, FALSE otherwise. Results are
  *   statically cached.
  *
diff --git a/core/modules/taxonomy/taxonomy.pages.inc b/core/modules/taxonomy/taxonomy.pages.inc
index 042263c..7791a1e 100644
--- a/core/modules/taxonomy/taxonomy.pages.inc
+++ b/core/modules/taxonomy/taxonomy.pages.inc
@@ -5,8 +5,8 @@
  * Page callbacks for the taxonomy module.
  */
 
-use Drupal\taxonomy\Plugin\Core\Entity\Term;
-use Drupal\taxonomy\Plugin\Core\Entity\Vocabulary;
+use Drupal\taxonomy\EntityType\Term;
+use Drupal\taxonomy\EntityType\Vocabulary;
 use Symfony\Component\HttpFoundation\JsonResponse;
 
 /**
diff --git a/core/modules/tracker/tracker.module b/core/modules/tracker/tracker.module
index 92f5701..2222f8b 100644
--- a/core/modules/tracker/tracker.module
+++ b/core/modules/tracker/tracker.module
@@ -5,7 +5,7 @@
  * Tracks recent content posted by a user or users.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Implements hook_help().
diff --git a/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php b/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
index bc9094d..5074078 100644
--- a/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
+++ b/core/modules/translation/lib/Drupal/translation/Tests/TranslationTest.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\translation\Tests;
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 use Drupal\simpletest\WebTestBase;
 
 /**
diff --git a/core/modules/translation/tests/translation_test.module b/core/modules/translation/tests/translation_test.module
index 8c9fdf2..60d9661 100644
--- a/core/modules/translation/tests/translation_test.module
+++ b/core/modules/translation/tests/translation_test.module
@@ -5,7 +5,7 @@
  * Mock module for content translation tests.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Implements hook_node_insert().
diff --git a/core/modules/translation/translation.module b/core/modules/translation/translation.module
index 0fc5332..ede474c 100644
--- a/core/modules/translation/translation.module
+++ b/core/modules/translation/translation.module
@@ -19,7 +19,7 @@
  *   date (0) or needs to be updated (1).
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Implements hook_help().
diff --git a/core/modules/translation/translation.pages.inc b/core/modules/translation/translation.pages.inc
index 7a9880c..c6e1974 100644
--- a/core/modules/translation/translation.pages.inc
+++ b/core/modules/translation/translation.pages.inc
@@ -5,7 +5,7 @@
  * User page callbacks for the Translation module.
  */
 
-use Drupal\node\Plugin\Core\Entity\Node;
+use Drupal\node\EntityType\Node;
 
 /**
  * Page callback: Displays a list of a node's translations.
diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php b/core/modules/user/lib/Drupal/user/EntityType/User.php
similarity index 97%
rename from core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
rename to core/modules/user/lib/Drupal/user/EntityType/User.php
index dbedf89..d82db89 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
+++ b/core/modules/user/lib/Drupal/user/EntityType/User.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\user\Plugin\Core\Entity\User.
+ * Definition of Drupal\user\EntityType\User.
  */
 
-namespace Drupal\user\Plugin\Core\Entity;
+namespace Drupal\user\EntityType;
 
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Annotation\Plugin;
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index d576afc..f529c23 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -2,7 +2,7 @@
 
 use Drupal\Core\Database\Query\SelectInterface;
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\file\Plugin\Core\Entity\File;
+use Drupal\file\EntityType\File;
 use Drupal\Core\Template\Attribute;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 
diff --git a/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php b/core/modules/views/lib/Drupal/views/EntityType/View.php
similarity index 98%
rename from core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
rename to core/modules/views/lib/Drupal/views/EntityType/View.php
index 29be1f6..1837b21 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/Core/Entity/View.php
+++ b/core/modules/views/lib/Drupal/views/EntityType/View.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Definition of Drupal\views\Plugin\Core\Entity\View.
+ * Definition of Drupal\views\EntityType\View.
  */
 
-namespace Drupal\views\Plugin\Core\Entity;
+namespace Drupal\views\EntityType;
 
 use Drupal\Core\Config\Entity\ConfigEntityBase;
 use Drupal\views_ui\ViewUI;
diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/wizard/WizardPluginBase.php
index 0e8546c..3bb7ff0 100644
--- a/core/modules/views/lib/Drupal/views/Plugin/views/wizard/WizardPluginBase.php
+++ b/core/modules/views/lib/Drupal/views/Plugin/views/wizard/WizardPluginBase.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views\Plugin\views\wizard;
 
-use Drupal\views\Plugin\Core\Entity\View;
+use Drupal\views\EntityType\View;
 use Drupal\views_ui\ViewUI;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\Plugin\views\PluginBase;
diff --git a/core/modules/views/lib/Drupal/views/Tests/ModuleTest.php b/core/modules/views/lib/Drupal/views/Tests/ModuleTest.php
index 67dfac6..017e902 100644
--- a/core/modules/views/lib/Drupal/views/Tests/ModuleTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/ModuleTest.php
@@ -196,7 +196,7 @@ function testStatusFunctions() {
    * Helper to return an expected views option array.
    *
    * @param array $views
-   *   An array of Drupal\views\Plugin\Core\Entity\View objects for which to
+   *   An array of Drupal\views\EntityType\View objects for which to
    *   create an options array.
    *
    * @return array
diff --git a/core/modules/views/lib/Drupal/views/Tests/ViewStorageTest.php b/core/modules/views/lib/Drupal/views/Tests/ViewStorageTest.php
index 8408aa4..00ebd59 100644
--- a/core/modules/views/lib/Drupal/views/Tests/ViewStorageTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/ViewStorageTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\views\Tests;
 
 use Drupal\views\ViewStorageController;
-use Drupal\views\Plugin\Core\Entity\View;
+use Drupal\views\EntityType\View;
 use Drupal\views\Plugin\views\display\Page;
 use Drupal\views\Plugin\views\display\DefaultDisplay;
 use Drupal\views\Plugin\views\display\Feed;
@@ -16,7 +16,7 @@
 /**
  * Tests the functionality of View and ViewStorageController.
  *
- * @see Drupal\views\Plugin\Core\Entity\View
+ * @see Drupal\views\EntityType\View
  * @see Drupal\views\ViewStorageController
  */
 class ViewStorageTest extends ViewTestBase {
@@ -284,7 +284,7 @@ protected function displayMethodTests() {
 
     $this->assertEqual($view->getPaths(), $expected_paths, 'Make sure the paths in the ui are generated as expected.');
 
-    // Tests Drupal\views\Plugin\Core\Entity\View::addDisplay()
+    // Tests Drupal\views\EntityType\View::addDisplay()
     $view = $this->controller->create(array());
     $random_title = $this->randomName();
 
@@ -303,7 +303,7 @@ protected function displayMethodTests() {
     $display = $view->get('display');
     $this->assertEqual($display[$id]['display_title'], 'Page 3');
 
-    // Tests Drupal\views\Plugin\Core\Entity\View::generateDisplayId().
+    // Tests Drupal\views\EntityType\View::generateDisplayId().
     // @todo Sadly this method is not public so it cannot be tested.
     // $view = $this->controller->create(array());
     // $this->assertEqual($view->generateDisplayId('default'), 'default', 'The plugin ID for default is always default.');
@@ -311,7 +311,7 @@ protected function displayMethodTests() {
     // $view->addDisplay('feed', 'feed title');
     // $this->assertEqual($view->generateDisplayId('feed'), 'feed_2', 'The generated ID for the first instance of a plugin type should have an suffix of _2.');
 
-    // Tests Drupal\views\Plugin\Core\Entity\View::newDisplay().
+    // Tests Drupal\views\EntityType\View::newDisplay().
     $view = $this->controller->create(array());
     $view->newDisplay('default');
 
diff --git a/core/modules/views/lib/Drupal/views/Tests/ViewTestBase.php b/core/modules/views/lib/Drupal/views/Tests/ViewTestBase.php
index 751d62b..6f79df1 100644
--- a/core/modules/views/lib/Drupal/views/Tests/ViewTestBase.php
+++ b/core/modules/views/lib/Drupal/views/Tests/ViewTestBase.php
@@ -417,7 +417,7 @@ protected function createViewFromConfig($view_name) {
   /**
    * Clones the view used in this test and sets the default display.
    *
-   * @param Drupal\views\Plugin\Core\Entity\View $original_view
+   * @param Drupal\views\EntityType\View $original_view
    *   (optional) The view to clone. If not specified, the default view for the
    *   test will be used.
    *
diff --git a/core/modules/views/lib/Drupal/views/ViewExecutable.php b/core/modules/views/lib/Drupal/views/ViewExecutable.php
index 639cd92..2cb4450 100644
--- a/core/modules/views/lib/Drupal/views/ViewExecutable.php
+++ b/core/modules/views/lib/Drupal/views/ViewExecutable.php
@@ -8,7 +8,7 @@
 namespace Drupal\views;
 
 use Symfony\Component\HttpFoundation\Response;
-use Drupal\views\Plugin\Core\Entity\View;
+use Drupal\views\EntityType\View;
 
 /**
  * @defgroup views_objects Objects that represent a View or part of a view
@@ -26,7 +26,7 @@ class ViewExecutable {
   /**
    * The config entity in which the view is stored.
    *
-   * @var Drupal\views\Plugin\Core\Entity\View
+   * @var Drupal\views\EntityType\View
    */
   public $storage;
 
@@ -400,7 +400,7 @@ class ViewExecutable {
   /**
    * Constructs a new ViewExecutable object.
    *
-   * @param Drupal\views\Plugin\Core\Entity\View $storage
+   * @param Drupal\views\EntityType\View $storage
    *   The view config entity the actual information is stored on.
    */
   public function __construct(View $storage) {
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index 6347df6..05c5987 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -12,7 +12,7 @@
 use Drupal\Core\Database\Query\AlterableInterface;
 use Drupal\views\ViewExecutable;
 use Drupal\Component\Plugin\Exception\PluginException;
-use Drupal\views\Plugin\Core\Entity\View;
+use Drupal\views\EntityType\View;
 
 /**
  * Views API version string.
@@ -1344,7 +1344,7 @@ function views_get_enabled_display_extenders() {
 /**
  * Create an empty view to work with.
  *
- * @return Drupal\views\Plugin\Core\Entity\View
+ * @return Drupal\views\EntityType\View
  *   A fully formed, empty $view object. This object must be populated before
  *   it can be successfully saved.
  */
@@ -1355,7 +1355,7 @@ function views_new_view() {
 /**
  * Creates a view from an array of values.
  *
- * @return Drupal\views\Plugin\Core\Entity\View
+ * @return Drupal\views\EntityType\View
  *   A fully formed $view object with properties from the values passed in.
  */
 function views_create_view(array $values = array()) {
@@ -1520,7 +1520,7 @@ function views_get_views_as_options($views_only = FALSE, $filter = 'all', $exclu
 /**
  * Returns whether the view is enabled.
  *
- * @param Drupal\views\Plugin\Core\Entity\View $view
+ * @param Drupal\views\EntityType\View $view
  *   The view object to check.
  *
  * @return bool
@@ -1533,7 +1533,7 @@ function views_view_is_enabled(View $view) {
 /**
  * Returns whether the view is disabled.
  *
- * @param Drupal\views\Plugin\Core\Entity\View $view
+ * @param Drupal\views\EntityType\View $view
  *   The view object to check.
  *
  * @return bool
@@ -1546,7 +1546,7 @@ function views_view_is_disabled(View $view) {
 /**
  * Enables a view.
  *
- * @param Drupal\views\Plugin\Core\Entity\View $view
+ * @param Drupal\views\EntityType\View $view
  *   The View object to disable.
  */
 function views_enable_view(View $view) {
@@ -1556,7 +1556,7 @@ function views_enable_view(View $view) {
 /**
  * Disables a view.
  *
- * @param Drupal\views\Plugin\Core\Entity\View $view
+ * @param Drupal\views\EntityType\View $view
  *   The View object to disable.
  */
 function views_disable_view(View $view) {
diff --git a/core/modules/views/views_ui/lib/Drupal/views_ui/ViewUI.php b/core/modules/views/views_ui/lib/Drupal/views_ui/ViewUI.php
index c5c9038..84b4682 100644
--- a/core/modules/views/views_ui/lib/Drupal/views_ui/ViewUI.php
+++ b/core/modules/views/views_ui/lib/Drupal/views_ui/ViewUI.php
@@ -10,7 +10,7 @@
 use Drupal\views\ViewExecutable;
 use Drupal\Core\Database\Database;
 use Drupal\views\Plugin\views\query\Sql;
-use Drupal\views\Plugin\Core\Entity\View;
+use Drupal\views\EntityType\View;
 use Drupal\views\ViewStorageInterface;
 
 /**
@@ -102,7 +102,7 @@ class ViewUI implements ViewStorageInterface {
   /**
    * The View storage object.
    *
-   * @var \Drupal\views\Plugin\Core\Entity\View
+   * @var \Drupal\views\EntityType\View
    */
   protected $storage;
 
@@ -991,7 +991,7 @@ public function language() {
   /**
    * Implements \Drupal\Core\TypedData\AccessibleInterface::access().
    */
-  public function access($operation = 'view', \Drupal\user\Plugin\Core\Entity\User $account = NULL) {
+  public function access($operation = 'view', \Drupal\user\EntityType\User $account = NULL) {
     return $this->__call(__FUNCTION__, func_get_args());
   }
 
diff --git a/core/modules/views/views_ui/views_ui.module b/core/modules/views/views_ui/views_ui.module
index 9a814d5..50c64ec 100644
--- a/core/modules/views/views_ui/views_ui.module
+++ b/core/modules/views/views_ui/views_ui.module
@@ -6,7 +6,7 @@
  */
 
 use Drupal\views\ViewExecutable;
-use Drupal\views\Plugin\Core\Entity\View;
+use Drupal\views\EntityType\View;
 use Drupal\views_ui\ViewUI;
 use Drupal\views\Analyzer;
 use Drupal\Core\Entity\EntityInterface;
