diff --git a/core/lib/Drupal/Core/Entity/EntityListController.php b/core/lib/Drupal/Core/Entity/EntityListController.php
index 354b27a..b1f1dee 100644
--- a/core/lib/Drupal/Core/Entity/EntityListController.php
+++ b/core/lib/Drupal/Core/Entity/EntityListController.php
@@ -36,6 +36,13 @@ class EntityListController implements EntityListControllerInterface {
   protected $entityInfo;
 
   /**
+   * The number of elements per page to allow.
+   *
+   * @var int
+   */
+  protected $limit = 10;
+
+  /**
    * Constructs a new EntityListController object.
    *
    * @param string $entity_type.
@@ -60,7 +67,17 @@ public function getStorageController() {
    * Implements \Drupal\Core\Entity\EntityListControllerInterface::load().
    */
   public function load() {
-    return $this->storage->load();
+    // @todo The entity query should be injected properly.
+    $factory = drupal_container()->get('entity.query');
+    $total_items = $factory->get($this->entityType)->count()->execute();
+
+    $current_page = pager_default_initialize($total_items, $this->limit, 0);
+
+    $entity_ids = $factory->get($this->entityType)
+      ->range($current_page * $this->limit, $this->limit)
+      ->execute();
+
+    return $this->storage->load($entity_ids);
   }
 
   /**
@@ -147,15 +164,18 @@ public function buildOperations(EntityInterface $entity) {
    * @todo Add a link to add a new item to the #empty text.
    */
   public function render() {
-    $build = array(
+    $build['table'] = array(
       '#theme' => 'table',
       '#header' => $this->buildHeader(),
       '#rows' => array(),
       '#empty' => t('There is no @label yet.', array('@label' => $this->entityInfo['label'])),
     );
     foreach ($this->load() as $entity) {
-      $build['#rows'][$entity->id()] = $this->buildRow($entity);
+      $build['table']['#rows'][$entity->id()] = $this->buildRow($entity);
     }
+    $build['pager'] = array(
+      '#theme' => 'pager',
+    );
     return $build;
   }
 
