diff --git a/core/includes/config.inc b/core/includes/config.inc
index 00c7fa6..579621e 100644
--- a/core/includes/config.inc
+++ b/core/includes/config.inc
@@ -292,6 +292,6 @@ function config_get_module_config_entities($module) {
   // once per module.
   $info = entity_get_info();
   return array_filter($info, function($entity_info) use ($module) {
-    return ($entity_info['module'] == $module) && is_subclass_of($entity_info['class'], 'Drupal\Core\Config\Entity\ConfigEntityInterface');
+    return ($entity_info['module'] == $module) && is_a($entity_info['class'], 'Drupal\Core\Config\Entity\ConfigEntityBase');
   });
 }
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
index 330f39c..c84f875 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
@@ -12,46 +12,7 @@
 /**
  * Defines a base configuration entity class.
  */
-abstract class ConfigEntityBase extends Entity implements ConfigEntityInterface {
-
-  /**
-   * The original ID of the configuration entity.
-   *
-   * The ID of a configuration entity is a unique string (machine name). When a
-   * configuration entity is updated and its machine name is renamed, the
-   * original ID needs to be known.
-   *
-   * @var string
-   */
-  protected $originalID;
-
-  /**
-   * Overrides Entity::__construct().
-   */
-  public function __construct(array $values, $entity_type) {
-    parent::__construct($values, $entity_type);
-
-    // Backup the original ID, if any.
-    // Configuration entity IDs are strings, and '0' is a valid ID.
-    $original_id = $this->id();
-    if ($original_id !== NULL && $original_id !== '') {
-      $this->setOriginalID($original_id);
-    }
-  }
-
-  /**
-   * Implements ConfigEntityInterface::getOriginalID().
-   */
-  public function getOriginalID() {
-    return $this->originalID;
-  }
-
-  /**
-   * Implements ConfigEntityInterface::setOriginalID().
-   */
-  public function setOriginalID($id) {
-    $this->originalID = $id;
-  }
+abstract class ConfigEntityBase extends Entity {
 
   /**
    * Overrides Entity::isNew().
@@ -65,49 +26,4 @@ public function setOriginalID($id) {
     return !empty($this->enforceIsNew) || $this->id() === NULL || $this->id() === '';
   }
 
-  /**
-   * Overrides Entity::get().
-   *
-   * EntityInterface::get() implements support for fieldable entities, but
-   * configuration entities are not fieldable.
-   */
-  public function get($property_name, $langcode = NULL) {
-    // @todo: Add support for translatable properties being not fields.
-    return isset($this->{$property_name}) ? $this->{$property_name} : NULL;
-  }
-
-  /**
-   * Overrides Entity::set().
-   *
-   * EntityInterface::set() implements support for fieldable entities, but
-   * configuration entities are not fieldable.
-   */
-  public function set($property_name, $value, $langcode = NULL) {
-    // @todo: Add support for translatable properties being not fields.
-    $this->{$property_name} = $value;
-  }
-
-  /**
-   * Overrides Entity::createDuplicate().
-   */
-  public function createDuplicate() {
-    $duplicate = parent::createDuplicate();
-    // Prevent the new duplicate from being misinterpreted as a rename.
-    $duplicate->setOriginalID(NULL);
-    return $duplicate;
-  }
-
-  /**
-   * Helper callback for uasort() to sort configuration entities by weight and label.
-   */
-  public static function sort($a, $b) {
-    $a_weight = isset($a->weight) ? $a->weight : 0;
-    $b_weight = isset($b->weight) ? $b->weight : 0;
-    if ($a_weight == $b_weight) {
-      $a_label = $a->label();
-      $b_label = $b->label();
-      return strnatcasecmp($a_label, $b_label);
-    }
-    return ($a_weight < $b_weight) ? -1 : 1;
-  }
 }
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php
deleted file mode 100644
index 15ef4dd..0000000
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityInterface.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\Core\Config\Entity\ConfigEntityInterface.
- */
-
-namespace Drupal\Core\Config\Entity;
-
-use Drupal\Core\Entity\EntityInterface;
-
-/**
- * Defines the interface common for all configuration entities.
- */
-interface ConfigEntityInterface extends EntityInterface {
-
-  /**
-   * Returns the original ID.
-   *
-   * @return string|null
-   *   The original ID, if any.
-   */
-  public function getOriginalID();
-
-  /**
-   * Sets the original ID.
-   *
-   * @param string $id
-   *   The new ID to set as original ID.
-   *
-   * @return void
-   */
-  public function setOriginalID($id);
-
-}
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityInterface.php b/core/lib/Drupal/Core/Entity/ContentEntityInterface.php
deleted file mode 100644
index 33ecdae..0000000
--- a/core/lib/Drupal/Core/Entity/ContentEntityInterface.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\Core\Entity\ContentEntityInterface.
- */
-
-namespace Drupal\Core\Entity;
-
-/**
- * Defines a common interface for all content entity objects.
- */
-interface ContentEntityInterface extends EntityInterface {
-
-}
diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index 979614f..3283fb2 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -57,6 +57,16 @@ class Entity implements IteratorAggregate, EntityInterface {
   protected $isDefaultRevision = TRUE;
 
   /**
+   * The original ID of the entity.
+   *
+   * The ID of a entity is a unique string (machine name). When an entity is
+   * updated and its machine name is renamed, the original ID needs to be known.
+   *
+   * @var string
+   */
+  protected $originalID;
+
+  /**
    * Constructs an Entity object.
    *
    * @param array $values
@@ -71,6 +81,13 @@ public function __construct(array $values, $entity_type) {
     foreach ($values as $key => $value) {
       $this->$key = $value;
     }
+
+    // Backup the original ID, if any.
+    // Entity IDs are strings, and '0' is a valid ID.
+    $original_id = $this->id();
+    if ($original_id !== NULL && $original_id !== '') {
+      $this->setOriginalID($original_id);
+    }
   }
 
   /**
@@ -344,6 +361,9 @@ public function createDuplicate() {
       $uuid = new Uuid();
       $duplicate->{$entity_info['entity_keys']['uuid']} = $uuid->generate();
     }
+
+    // Prevent the new duplicate from being misinterpreted as a rename.
+    $duplicate->setOriginalID(NULL);
     return $duplicate;
   }
 
@@ -371,4 +391,33 @@ public function isDefaultRevision($new_value = NULL) {
     }
     return $return;
   }
+
+  /**
+   * Implements \Drupal\Core\Entity\EntityInterface::getOriginalID().
+   */
+  public function getOriginalID() {
+    return $this->originalID;
+  }
+
+  /**
+   * Implements \Drupal\Core\Entity\EntityInterface::setOriginalID().
+   */
+  public function setOriginalID($id) {
+    $this->originalID = $id;
+  }
+
+  /**
+   * Helper callback for uasort() to sort entities by weight and label.
+   */
+  public static function sort($a, $b) {
+    $a_weight = isset($a->weight) ? $a->weight : 0;
+    $b_weight = isset($b->weight) ? $b->weight : 0;
+    if ($a_weight == $b_weight) {
+      $a_label = $a->label();
+      $b_label = $b->label();
+      return strnatcasecmp($a_label, $b_label);
+    }
+    return ($a_weight < $b_weight) ? -1 : 1;
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Entity/EntityInterface.php b/core/lib/Drupal/Core/Entity/EntityInterface.php
index 9b751d4..ddf770a 100644
--- a/core/lib/Drupal/Core/Entity/EntityInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityInterface.php
@@ -181,4 +181,23 @@ public function getRevisionId();
    *   $new_value was passed, the previous value is returned.
    */
   public function isDefaultRevision($new_value = NULL);
+
+  /**
+   * Returns the original ID.
+   *
+   * @return string|null
+   *   The original ID, if any.
+   */
+  public function getOriginalID();
+
+  /**
+   * Sets the original ID.
+   *
+   * @param string $id
+   *   The new ID to set as original ID.
+   *
+   * @return void
+   */
+  public function setOriginalID($id);
+
 }
diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
index e0bbfd9..31fada6 100644
--- a/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Plugin/Core/Entity/Comment.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\comment\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
@@ -43,7 +42,7 @@
  *   }
  * )
  */
-class Comment extends Entity implements ContentEntityInterface {
+class Comment extends Entity {
 
   /**
    * The comment ID.
diff --git a/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php b/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
index bc54514..98e9a5c 100644
--- a/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
+++ b/core/modules/file/lib/Drupal/file/Plugin/Core/Entity/File.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\file\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
@@ -35,7 +34,7 @@
  *   }
  * )
  */
-class File extends Entity implements ContentEntityInterface {
+class File extends Entity {
 
   /**
    * The file ID.
diff --git a/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php b/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
index 47de776..95b6c0f 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/Core/Entity/Node.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\node\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
@@ -55,7 +54,7 @@
  *   }
  * )
  */
-class Node extends Entity implements ContentEntityInterface {
+class Node extends Entity {
 
   /**
    * The node ID.
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
index 51468af..b598882 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Plugin/Core/Entity/Term.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\taxonomy\Plugin\Core\Entity;
 
-use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\Entity;
 use Drupal\Core\Annotation\Plugin;
 use Drupal\Core\Annotation\Translation;
@@ -46,7 +45,7 @@
  *   menu_base_path = "taxonomy/term/%taxonomy_term"
  * )
  */
-class Term extends Entity implements ContentEntityInterface {
+class Term extends Entity {
 
   /**
    * The taxonomy term ID.
diff --git a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
index bafa771..016832d 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/Core/Entity/User.php
@@ -191,4 +191,12 @@ class User extends Entity {
   public function id() {
     return $this->uid;
   }
+
+  /**
+   * Overrides \Drupal\Entity\Entity::id().
+   */
+  public function id() {
+    return isset($this->id) ? $this->id : NULL;
+  }
+
 }
diff --git a/core/modules/views/lib/Drupal/views/ViewStorageInterface.php b/core/modules/views/lib/Drupal/views/ViewStorageInterface.php
index 01bb87d..956c417 100644
--- a/core/modules/views/lib/Drupal/views/ViewStorageInterface.php
+++ b/core/modules/views/lib/Drupal/views/ViewStorageInterface.php
@@ -7,12 +7,12 @@
 
 namespace Drupal\views;
 
-use Drupal\Core\Config\Entity\ConfigEntityInterface;
+use Drupal\Core\Entity\EntityInterface;
 
 /**
  * Defines an interface for View storage classes.
  */
-interface ViewStorageInterface extends \IteratorAggregate, ConfigEntityInterface {
+interface ViewStorageInterface extends \IteratorAggregate, EntityInterface {
 
   /**
    * Sets the configuration entity status to enabled.
diff --git a/core/modules/views/views_ui/lib/Drupal/views_ui/ViewCloneFormController.php b/core/modules/views/views_ui/lib/Drupal/views_ui/ViewCloneFormController.php
index 70f18a9..b21b038 100644
--- a/core/modules/views/views_ui/lib/Drupal/views_ui/ViewCloneFormController.php
+++ b/core/modules/views/views_ui/lib/Drupal/views_ui/ViewCloneFormController.php
@@ -68,7 +68,7 @@ protected function actions(array $form, array &$form_state) {
    */
   public function submit(array $form, array &$form_state) {
     $entity = parent::submit($form, $form_state);
-    $entity->setOriginalID(NULL);
+    $entity = $entity->createDuplicate();
     $entity->save();
 
     // Redirect the user to the view admin form.
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 fa8fc58..68e328d 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
@@ -1060,14 +1060,14 @@ public function isEnabled() {
   }
 
   /**
-   * Implements \Drupal\Core\Config\Entity\ConfigEntityInterface::getOriginalID().
+   * Implements \Drupal\Core\Entity\EntityInterface::getOriginalID().
    */
   public function getOriginalID() {
     return $this->__call(__FUNCTION__, func_get_args());
   }
 
   /**
-   * Implements \Drupal\Core\Config\Entity\ConfigEntityInterface::setOriginalID().
+   * Implements \Drupal\Core\Entity\EntityInterface::setOriginalID().
    */
   public function setOriginalID($id) {
     return $this->__call(__FUNCTION__, func_get_args());
