diff --git a/core/core.services.yml b/core/core.services.yml
index 55d5b34..b7a55d8 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -275,8 +275,8 @@ services:
     tags:
       - { name: route_enhancer, priority: 20 }
       - { name: legacy_route_enhancer, priority: 20 }
-  route_enhancer.entity_form:
-    class: Drupal\Core\Entity\Enhancer\EntityFormEnhancer
+  route_enhancer.entity:
+    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
     arguments: ['@content_negotiation']
     tags:
       - { name: route_enhancer, priority: 15 }
diff --git a/core/lib/Drupal/Core/Entity/Controller/EntityListController.php b/core/lib/Drupal/Core/Entity/Controller/EntityListController.php
deleted file mode 100644
index 4984bb0..0000000
--- a/core/lib/Drupal/Core/Entity/Controller/EntityListController.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Entity\Controller\EntityListController.
- */
-
-namespace Drupal\Core\Entity\Controller;
-
-use Drupal\Core\ControllerInterface;
-use Drupal\Core\Entity\EntityManager;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-
-/**
- * Defines a generic controller to list entities.
- */
-class EntityListController implements ControllerInterface {
-
-  /**
-   * The entity manager
-   *
-   * @var \Drupal\Core\Entity\EntityManager
-   */
-  protected $entityManager;
-
-  /**
-   * Creates an EntityListController object.
-   *
-   * @param \Drupal\Core\Entity\EntityManager $entity_manager
-   *   The entity manager.
-   */
-  public function __construct(EntityManager $entity_manager) {
-    $this->entityManager = $entity_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container) {
-    return new static(
-      $container->get('plugin.manager.entity')
-    );
-  }
-
-  /**
-   * Provides the listing page for any entity type.
-   *
-   * @return array
-   *   A render array as expected by drupal_render().
-   */
-  public function listing($entity_type) {
-    return $this->entityManager->getListController($entity_type)->render();
-  }
-
-}
diff --git a/core/lib/Drupal/Core/Entity/Enhancer/EntityFormEnhancer.php b/core/lib/Drupal/Core/Entity/Enhancer/EntityRouteEnhancer.php
similarity index 53%
rename from core/lib/Drupal/Core/Entity/Enhancer/EntityFormEnhancer.php
rename to core/lib/Drupal/Core/Entity/Enhancer/EntityRouteEnhancer.php
index b6739e0..2337658 100644
--- a/core/lib/Drupal/Core/Entity/Enhancer/EntityFormEnhancer.php
+++ b/core/lib/Drupal/Core/Entity/Enhancer/EntityRouteEnhancer.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Entity\Enhancer\EntityFormEnhancer.
+ * Contains \Drupal\Core\Entity\Enhancer\EntityRouteEnhancer.
  */
 
 namespace Drupal\Core\Entity\Enhancer;
@@ -14,17 +14,17 @@
 /**
  * Enhances an entity form route with the appropriate controller.
  */
-class EntityFormEnhancer implements RouteEnhancerInterface {
+class EntityRouteEnhancer implements RouteEnhancerInterface {
 
   /**
    * Content negotiation library.
    *
-   * @var \Drupal\CoreContentNegotiation
+   * @var \Drupal\Core\ContentNegotiation
    */
   protected $negotiation;
 
   /**
-   * Constructs a new \Drupal\Core\Entity\Enhancer\EntityFormEnhancer.
+   * Constructs a new \Drupal\Core\Entity\Enhancer\EntityRouteEnhancer.
    *
    * @param \Drupal\Core\ContentNegotiation $negotiation
    *   The content negotiation library.
@@ -37,8 +37,13 @@ public function __construct(ContentNegotiation $negotiation) {
    * {@inheritdoc}
    */
   public function enhance(array $defaults, Request $request) {
-    if (empty($defaults['_controller']) && !empty($defaults['_entity_form']) && $this->negotiation->getContentType($request) === 'html') {
-      $defaults['_controller'] = '\Drupal\Core\Entity\HtmlEntityFormController::content';
+    if (empty($defaults['_controller']) && $this->negotiation->getContentType($request) === 'html') {
+      if (!empty($defaults['_entity_form'])) {
+        $defaults['_controller'] = '\Drupal\Core\Entity\HtmlEntityFormController::content';
+      }
+      elseif (!empty($defaults['_entity_list'])) {
+        $defaults['_controller'] = '\Drupal\Core\Entity\HtmlEntityListController::content';
+      }
     }
     return $defaults;
   }
diff --git a/core/lib/Drupal/Core/Entity/HtmlEntityListController.php b/core/lib/Drupal/Core/Entity/HtmlEntityListController.php
new file mode 100644
index 0000000..0b962bb
--- /dev/null
+++ b/core/lib/Drupal/Core/Entity/HtmlEntityListController.php
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Entity\HtmlEntityListController.
+ */
+
+namespace Drupal\Core\Entity;
+
+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+
+/**
+ * Wrapping controller for entity lists that serve as the main page body.
+ */
+class HtmlEntityListController implements ContainerAwareInterface {
+
+  /**
+   * The injection container for this object.
+   *
+   * @var \Symfony\Component\DependencyInjection\ContainerInterface
+   */
+  protected $container;
+
+  /**
+   * Injects the service container used by this object.
+   *
+   * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
+   *   The service container this object should use.
+   */
+  public function setContainer(ContainerInterface $container = NULL) {
+    $this->container = $container;
+  }
+
+  public function content(Request $request, $_entity_list) {
+    $content = $this->container->get('plugin.manager.entity')->getListController($_entity_list)->render();
+    return new Response(drupal_render_page($content));
+  }
+
+}
diff --git a/core/modules/block/custom_block/custom_block.routing.yml b/core/modules/block/custom_block/custom_block.routing.yml
index ac4ec99..cfe79c7 100644
--- a/core/modules/block/custom_block/custom_block.routing.yml
+++ b/core/modules/block/custom_block/custom_block.routing.yml
@@ -1,8 +1,7 @@
 custom_block_type_list:
   pattern: '/admin/structure/custom-blocks'
   defaults:
-    _content: '\Drupal\Core\Entity\Controller\EntityListController::listing'
-    entity_type: 'custom_block_type'
+    _entity_list: 'custom_block_type'
   requirements:
     _permission: 'administer blocks'
 
diff --git a/core/modules/config/tests/config_test/config_test.routing.yml b/core/modules/config/tests/config_test/config_test.routing.yml
index d939b30..b5cfff6 100644
--- a/core/modules/config/tests/config_test/config_test.routing.yml
+++ b/core/modules/config/tests/config_test/config_test.routing.yml
@@ -1,7 +1,6 @@
 config_test_list_page:
   pattern: '/admin/structure/config_test'
   defaults:
-    _content: '\Drupal\Core\Entity\Controller\EntityListController::listing'
-    entity_type: 'config_test'
+    _entity_list: 'config_test'
   requirements:
     _access: 'TRUE'
diff --git a/core/modules/contact/contact.routing.yml b/core/modules/contact/contact.routing.yml
index 4cbfff2..9c3ee6a 100644
--- a/core/modules/contact/contact.routing.yml
+++ b/core/modules/contact/contact.routing.yml
@@ -8,8 +8,7 @@ contact_category_delete:
 contact_category_list:
   pattern: '/admin/structure/contact'
   defaults:
-    _content: '\Drupal\Core\Entity\Controller\EntityListController::listing'
-    entity_type: 'contact_category'
+    _entity_list: 'contact_category'
   requirements:
     _permission: 'administer contact forms'
 
diff --git a/core/modules/picture/picture.routing.yml b/core/modules/picture/picture.routing.yml
index 408dd33..66a3689 100644
--- a/core/modules/picture/picture.routing.yml
+++ b/core/modules/picture/picture.routing.yml
@@ -1,8 +1,7 @@
 picture_mapping_page:
   pattern: '/admin/config/media/picturemapping'
   defaults:
-    _content: '\Drupal\Core\Entity\Controller\EntityListController::listing'
-    entity_type: 'picture_mapping'
+    _entity_list: 'picture_mapping'
   requirements:
     _permission: 'administer pictures'
 
diff --git a/core/modules/user/user.routing.yml b/core/modules/user/user.routing.yml
index fb49de3..0a7531d 100644
--- a/core/modules/user/user.routing.yml
+++ b/core/modules/user/user.routing.yml
@@ -36,8 +36,7 @@ user_account_settings:
 user_role_list:
   pattern: '/admin/people/roles'
   defaults:
-    _content: '\Drupal\Core\Entity\Controller\EntityListController::listing'
-    entity_type: 'user_role'
+    _entity_list: 'user_role'
   requirements:
     _permission: 'administer permissions'
 
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/Routing/ViewsUIController.php b/core/modules/views_ui/lib/Drupal/views_ui/Routing/ViewsUIController.php
index 472b460..01d43f3 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/Routing/ViewsUIController.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/Routing/ViewsUIController.php
@@ -76,16 +76,6 @@ public static function create(ContainerInterface $container) {
   }
 
   /**
-   * Lists all of the views.
-   *
-   * @return array
-   *   The Views listing page.
-   */
-  public function listing() {
-    return $this->entityManager->getListController('view')->render();
-  }
-
-  /**
    * Lists all instances of fields on any views.
    *
    * @return array
diff --git a/core/modules/views_ui/views_ui.routing.yml b/core/modules/views_ui/views_ui.routing.yml
index f2046f6..772cc32 100644
--- a/core/modules/views_ui/views_ui.routing.yml
+++ b/core/modules/views_ui/views_ui.routing.yml
@@ -1,7 +1,7 @@
 views_ui.list:
   pattern: '/admin/structure/views'
   defaults:
-    _controller: '\Drupal\views_ui\Routing\ViewsUIController::listing'
+    _entity_list: 'view'
   requirements:
     _permission: 'administer views'
 
