diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index 714aeeb..4c9f112 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -363,6 +363,44 @@ public function referencedEntities() {
   }
 
   /**
+   * Loads an entity.
+   *
+   * @param mixed $id
+   *   The id of the entity to load.
+   *
+   * @return static
+   *   The entity object or NULL if there is no entity with the given ID.
+   *
+   * @throws \RuntimeException
+   */
+  public static function load($id) {
+    $entities = static::loadMultiple(array($id));
+    return isset($entities[$id]) ? $entities[$id] : NULL;
+  }
+
+  /**
+   * Loads one or more entities.
+   *
+   * @param array $ids
+   *   An array of entity IDs, or NULL to load all entities.
+   *
+   * @return static[]
+   *   An array of entity objects indexed by their IDs.
+   *
+   * @throws \RuntimeException
+   */
+  public static function loadMultiple(array $ids = NULL) {
+    $called_class = get_called_class();
+    foreach (\Drupal::entityManager()->getDefinitions() as $entity_type => $entity_info) {
+      if ($entity_info->getClass() == $called_class || $entity_info->isSubclassOf($called_class)) {
+        return \Drupal::entityManager()->getStorageController($entity_type)->loadMultiple($ids);
+      }
+    }
+
+    throw new \RuntimeException(sprintf('The %s class does not correspond to an entity type.', $called_class));
+  }
+
+  /**
    * Acts on an entity after it was saved or deleted.
    */
   protected function onSaveOrDelete() {
