diff --git a/core/includes/entity.inc b/core/includes/entity.inc
index e5d2ae5..c667fb4 100644
--- a/core/includes/entity.inc
+++ b/core/includes/entity.inc
@@ -273,8 +273,7 @@ function entity_delete_multiple($entity_type, array $ids) {
  */
 function entity_create($entity_type, array $values) {
   return drupal_container()->get('plugin.manager.entity')
-    ->getStorageController($entity_type)
-    ->create($values);
+    ->createInstance($entity_type, array('values' => $values));
 }
 
 /**
diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php
index 659043e..3269834 100644
--- a/core/lib/Drupal/Core/Entity/EntityManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityManager.php
@@ -8,7 +8,6 @@
 namespace Drupal\Core\Entity;
 
 use Drupal\Component\Plugin\PluginManagerBase;
-use Drupal\Component\Plugin\Factory\DefaultFactory;
 use Drupal\Component\Plugin\Discovery\ProcessDecorator;
 use Drupal\Core\Plugin\Discovery\AlterDecorator;
 use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
@@ -242,7 +241,6 @@ public function __construct() {
     $this->discovery = new InfoHookDecorator($this->discovery, 'entity_info');
     $this->discovery = new ProcessDecorator($this->discovery, array($this, 'processDefinition'));
     $this->discovery = new AlterDecorator($this->discovery, 'entity_info');
-    $this->factory = new DefaultFactory($this);
 
     // Entity type plugins includes translated strings, so each language is
     // cached separately.
@@ -311,6 +309,13 @@ public function processDefinition(&$definition, $plugin_id) {
   }
 
   /**
+   * Overrides Drupal\Component\Plugin\PluginManagerBase::createInstance().
+   */
+  public function createInstance($plugin_id, array $configuration) {
+    return $this->getStorageController($plugin_id)->create($configuration['values']);
+  }
+
+  /**
    * Returns an entity controller class.
    *
    * @param string $entity_type
