diff --git a/core/includes/entity.inc b/core/includes/entity.inc
index 390d976..dcd8433 100644
--- a/core/includes/entity.inc
+++ b/core/includes/entity.inc
@@ -53,7 +53,7 @@ function entity_render_cache_clear() {
   $entity_manager = Drupal::entityManager();
   foreach ($entity_manager->getDefinitions() as $entity_type => $info) {
     if ($entity_manager->hasController($entity_type, 'render')) {
-      $entity_manager->getRenderController($entity_type)->resetCache();
+      $entity_manager->getViewBuilder($entity_type)->resetCache();
     }
   }
 }
@@ -435,7 +435,7 @@ function entity_page_label(EntityInterface $entity, $langcode = NULL) {
  * @return \Drupal\Core\Entity\EntityAccessControllerInterface
  *   An entity access controller instance.
  *
- * @deprecated Use \Drupal\Core\Entity\EntityManager::getRenderController().
+ * @deprecated Use \Drupal\Core\Entity\EntityManager::getViewBuilder().
  */
 function entity_access_controller($entity_type) {
   return \Drupal::entityManager()
@@ -598,19 +598,19 @@ function entity_list_controller($entity_type) {
 }
 
 /**
- * Returns an entity render controller for a given entity type.
+ * Returns an entity view builder for a given entity type.
  *
  * @param string $entity_type
  *   The type of the entity.
  *
- * @return Drupal\Core\Entity\EntityRenderControllerInterface
- *   An entity render controller.
+ * @return Drupal\Core\Entity\EntityViewBuilderInterface
+ *   An entity view builder.
  *
  * @deprecated Use \Drupal\Core\Entity\EntityManager::getFormController().
  */
-function entity_render_controller($entity_type) {
+function entity_view_builder($entity_type) {
   return \Drupal::entityManager()
-    ->getRenderController($entity_type);
+    ->getViewBuilder($entity_type);
 }
 
 /**
@@ -631,7 +631,7 @@ function entity_render_controller($entity_type) {
  *   A render array for the entity.
  */
 function entity_view(EntityInterface $entity, $view_mode, $langcode = NULL, $reset = FALSE) {
-  $render_controller = \Drupal::entityManager()->getRenderController($entity->entityType());
+  $render_controller = \Drupal::entityManager()->getViewBuilder($entity->entityType());
   if ($reset) {
     $render_controller->resetCache(array($entity->id()));
   }
@@ -657,7 +657,7 @@ function entity_view(EntityInterface $entity, $view_mode, $langcode = NULL, $res
  *   entities array passed in $entities.
  */
 function entity_view_multiple(array $entities, $view_mode, $langcode = NULL, $reset = FALSE) {
-  $render_controller = \Drupal::entityManager()->getRenderController(reset($entities)->entityType());
+  $render_controller = \Drupal::entityManager()->getViewBuilder(reset($entities)->entityType());
   if ($reset) {
     $render_controller->resetCache(array_keys($entities));
   }
diff --git a/core/lib/Drupal/Core/Entity/Annotation/EntityType.php b/core/lib/Drupal/Core/Entity/Annotation/EntityType.php
index 85ef357..489f807 100644
--- a/core/lib/Drupal/Core/Entity/Annotation/EntityType.php
+++ b/core/lib/Drupal/Core/Entity/Annotation/EntityType.php
@@ -57,7 +57,7 @@ class EntityType extends Plugin {
    * - list: The name of the class that provides listings of the entities. The
    *   class must implement \Drupal\Core\Entity\EntityListControllerInterface.
    * - render: The name of the class that is used to render the entities. The
-   *   class must implement \Drupal\Core\Entity\EntityRenderControllerInterface.
+   *   class must implement \Drupal\Core\Entity\EntityViewBuilderInterface.
    * - access: The name of the class that is used for access checks. The class
    *   must implement \Drupal\Core\Entity\EntityAccessControllerInterface.
    *   Defaults to \Drupal\Core\Entity\EntityAccessController.
diff --git a/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php b/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php
index ab0f099..f80eb51 100644
--- a/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php
+++ b/core/lib/Drupal/Core/Entity/Controller/EntityViewController.php
@@ -62,7 +62,7 @@ public static function create(ContainerInterface $container) {
    */
   public function view(EntityInterface $_entity, $view_mode = 'full', $langcode = NULL) {
     return $this->entityManager
-      ->getRenderController($_entity->entityType())
+      ->getViewBuilder($_entity->entityType())
       ->view($_entity, $view_mode, $langcode);
   }
 
diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index 6d41d13..a0d5bd4 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -740,7 +740,7 @@ public function changed() {
 
     foreach ($referenced_entity_ids as $entity_type => $entity_ids) {
       if (\Drupal::entityManager()->hasController($entity_type, 'render')) {
-        \Drupal::entityManager()->getRenderController($entity_type)->resetCache(array_keys($entity_ids));
+        \Drupal::entityManager()->getViewBuilder($entity_type)->resetCache(array_keys($entity_ids));
       }
     }
   }
diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php
index 67e5690..fa69895 100644
--- a/core/lib/Drupal/Core/Entity/EntityManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityManager.php
@@ -307,16 +307,16 @@ public function getFormController($entity_type, $operation) {
   }
 
   /**
-   * Creates a new render controller instance.
+   * Creates a new view builder instance.
    *
    * @param string $entity_type
-   *   The entity type for this render controller.
+   *   The entity type for this view builder.
    *
-   * @return \Drupal\Core\Entity\EntityRenderControllerInterface.
-   *   A render controller instance.
+   * @return \Drupal\Core\Entity\EntityViewBuilderInterface.
+   *   A view builder instance.
    */
-  public function getRenderController($entity_type) {
-    return $this->getController($entity_type, 'render');
+  public function getViewBuilder($entity_type) {
+    return $this->getController($entity_type, 'view_builder');
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Entity/EntityRenderController.php b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
similarity index 95%
rename from core/lib/Drupal/Core/Entity/EntityRenderController.php
rename to core/lib/Drupal/Core/Entity/EntityViewBuilder.php
index fe6bd10..5525c19 100644
--- a/core/lib/Drupal/Core/Entity/EntityRenderController.php
+++ b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Entity\EntityRenderController.
+ * Contains \Drupal\Core\Entity\EntityViewBuilder.
  */
 
 namespace Drupal\Core\Entity;
@@ -13,7 +13,7 @@
 /**
  * Base class for entity view controllers.
  */
-class EntityRenderController implements EntityRenderControllerInterface {
+class EntityViewBuilder implements EntityViewBuilderInterface {
 
   /**
    * The type of entities for which this controller is instantiated.
@@ -56,7 +56,7 @@ public function __construct($entity_type) {
   }
 
   /**
-   * Implements \Drupal\Core\Entity\EntityRenderControllerInterface::buildContent().
+   * {@inheritdoc}
    */
   public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) {
     field_attach_prepare_view($this->entityType, $entities, $displays, $langcode);
@@ -148,7 +148,7 @@ protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langco
   protected function alterBuild(array &$build, EntityInterface $entity, EntityDisplay $display, $view_mode, $langcode = NULL) { }
 
   /**
-   * Implements \Drupal\Core\Entity\EntityRenderControllerInterface::view().
+   * {@inheritdoc}
    */
   public function view(EntityInterface $entity, $view_mode = 'full', $langcode = NULL) {
     $buildList = $this->viewMultiple(array($entity), $view_mode, $langcode);
@@ -156,7 +156,7 @@ public function view(EntityInterface $entity, $view_mode = 'full', $langcode = N
   }
 
   /**
-   * Implements \Drupal\Core\Entity\EntityRenderControllerInterface::viewMultiple().
+   * {@inheritdoc}
    */
   public function viewMultiple(array $entities = array(), $view_mode = 'full', $langcode = NULL) {
     if (!isset($langcode)) {
diff --git a/core/lib/Drupal/Core/Entity/EntityRenderControllerInterface.php b/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
similarity index 96%
rename from core/lib/Drupal/Core/Entity/EntityRenderControllerInterface.php
rename to core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
index a112fc2..94fe045 100644
--- a/core/lib/Drupal/Core/Entity/EntityRenderControllerInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityViewBuilderInterface.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Entity\EntityRenderControllerInterface.
+ * Contains \Drupal\Core\Entity\EntityViewBuilderInterface.
  */
 
 namespace Drupal\Core\Entity;
@@ -10,7 +10,7 @@
 /**
  * Defines a common interface for entity view controller classes.
  */
-interface EntityRenderControllerInterface {
+interface EntityViewBuilderInterface {
 
   /**
    * Build the structured $content property on the entity.
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php b/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php
index bfbf5b0..7b57afb 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Controller/AggregatorController.php
@@ -85,7 +85,7 @@ public function feedAdd() {
    */
   public function viewFeed(FeedInterface $aggregator_feed) {
     $entity_manager = $this->entityManager();
-    $feed_source = $entity_manager->getRenderController('aggregator_feed')
+    $feed_source = $entity_manager->getViewBuilder('aggregator_feed')
       ->view($aggregator_feed, 'default');
     // Load aggregator feed item for the particular feed id.
     $items = $entity_manager->getStorageController('aggregator_item')->loadByFeed($aggregator_feed->id());
@@ -131,7 +131,7 @@ protected function buildPageList(array $items, $feed_source = '') {
     );
     $build['feed_source'] = is_array($feed_source) ? $feed_source : array('#markup' => $feed_source);
     if ($items) {
-      $build['items'] = $this->entityManager()->getRenderController('aggregator_item')
+      $build['items'] = $this->entityManager()->getViewBuilder('aggregator_item')
         ->viewMultiple($items, 'default');
       $build['pager'] = array('#theme' => 'pager');
     }
@@ -274,7 +274,7 @@ public function categories() {
       if ($aggregator_summary_items) {
         $items = $entity_manager->getStorageController('aggregator_item')->loadByCategory($category->cid);
         if ($items) {
-          $summary_items = $entity_manager->getRenderController('aggregator_item')->viewMultiple($items, 'summary');
+          $summary_items = $entity_manager->getViewBuilder('aggregator_item')->viewMultiple($items, 'summary');
         }
       }
       $category->url = $this->urlGenerator()->generateFromPath('aggregator/categories/' . $category->cid);
@@ -326,7 +326,7 @@ public function sources() {
         $items = $entity_manager->getStorageController('aggregator_item')
           ->loadByFeed($feed->id());
         if ($items) {
-          $summary_items = $entity_manager->getRenderController('aggregator_item')
+          $summary_items = $entity_manager->getViewBuilder('aggregator_item')
             ->viewMultiple($items, 'summary');
         }
       }
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php b/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
index 46b3894..f5afc41 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Entity/Feed.php
@@ -23,7 +23,7 @@
  *   module = "aggregator",
  *   controllers = {
  *     "storage" = "Drupal\aggregator\FeedStorageController",
- *     "render" = "Drupal\aggregator\FeedRenderController",
+ *     "view_builder" = "Drupal\aggregator\FeedViewBuilder",
  *     "form" = {
  *       "default" = "Drupal\aggregator\FeedFormController",
  *       "delete" = "Drupal\aggregator\Form\FeedDeleteForm",
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Entity/Item.php b/core/modules/aggregator/lib/Drupal/aggregator/Entity/Item.php
index f0b6694..6b1359c 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Entity/Item.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Entity/Item.php
@@ -22,7 +22,7 @@
  *   module = "aggregator",
  *   controllers = {
  *     "storage" = "Drupal\aggregator\ItemStorageController",
- *     "render" = "Drupal\aggregator\ItemRenderController"
+ *     "view_builder" = "Drupal\aggregator\ItemViewBuilder"
  *   },
  *   base_table = "aggregator_item",
  *   fieldable = TRUE,
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/FeedRenderController.php b/core/modules/aggregator/lib/Drupal/aggregator/FeedViewBuilder.php
similarity index 63%
rename from core/modules/aggregator/lib/Drupal/aggregator/FeedRenderController.php
rename to core/modules/aggregator/lib/Drupal/aggregator/FeedViewBuilder.php
index 47de47b..853122f 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/FeedRenderController.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/FeedViewBuilder.php
@@ -2,21 +2,21 @@
 
 /**
  * @file
- * Contains \Drupal\aggregator\FeedRenderController.
+ * Contains \Drupal\aggregator\FeedViewBuilder.
  */
 
 namespace Drupal\aggregator;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilder;
 
 /**
  * Render controller for aggregator feed items.
  */
-class FeedRenderController extends EntityRenderController {
+class FeedViewBuilder extends EntityViewBuilder {
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::getBuildDefaults().
+   * {@inheritdoc}
    */
   protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langcode) {
     $defaults = parent::getBuildDefaults($entity, $view_mode, $langcode);
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Form/AggregatorCategorizeFormBase.php b/core/modules/aggregator/lib/Drupal/aggregator/Form/AggregatorCategorizeFormBase.php
index 794dcce..80c4bfc 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Form/AggregatorCategorizeFormBase.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Form/AggregatorCategorizeFormBase.php
@@ -11,7 +11,7 @@
 use Drupal\aggregator\ItemStorageControllerInterface;
 use Drupal\Component\Utility\String;
 use Drupal\Core\Database\Connection;
-use Drupal\Core\Entity\EntityRenderControllerInterface;
+use Drupal\Core\Entity\EntityViewBuilderInterface;
 use Drupal\Core\Form\FormBase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -21,9 +21,9 @@
 abstract class AggregatorCategorizeFormBase extends FormBase {
 
   /**
-   * The aggregator item render controller.
+   * The aggregator item view builder.
    *
-   * @var \Drupal\Core\Entity\EntityRenderControllerInterface
+   * @var \Drupal\Core\Entity\EntityViewBuilderInterface
    */
   protected $aggregatorItemRenderer;
 
@@ -58,14 +58,14 @@
   /**
    * Constructs a \Drupal\aggregator\Controller\AggregatorController object.
    *
-   * @param \Drupal\Core\Entity\EntityRenderControllerInterface $aggregator_item_renderer
-   *   The item render controller.
+   * @param \Drupal\Core\Entity\EntityViewBuilderInterface $aggregator_item_renderer
+   *   The item view builder.
    * @param \Drupal\Core\Database\Connection $database
    *   The database connection.
    * @param \Drupal\aggregator\ItemStorageControllerInterface $aggregator_item_storage
    *   The aggregator item storage controller.
    */
-  public function __construct(EntityRenderControllerInterface $aggregator_item_renderer, Connection $database, ItemStorageControllerInterface $aggregator_item_storage) {
+  public function __construct(EntityViewBuilderInterface $aggregator_item_renderer, Connection $database, ItemStorageControllerInterface $aggregator_item_storage) {
     $this->aggregatorItemRenderer = $aggregator_item_renderer;
     $this->database = $database;
     $this->config = $this->config('aggregator.settings');
@@ -77,7 +77,7 @@ public function __construct(EntityRenderControllerInterface $aggregator_item_ren
    */
   public static function create(ContainerInterface $container) {
     return new static(
-      $container->get('plugin.manager.entity')->getRenderController('aggregator_item'),
+      $container->get('plugin.manager.entity')->getViewBuilder('aggregator_item'),
       $container->get('database'),
       $container->get('plugin.manager.entity')->getStorageController('aggregator_item')
     );
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/ItemRenderController.php b/core/modules/aggregator/lib/Drupal/aggregator/ItemViewBuilder.php
similarity index 68%
rename from core/modules/aggregator/lib/Drupal/aggregator/ItemRenderController.php
rename to core/modules/aggregator/lib/Drupal/aggregator/ItemViewBuilder.php
index af11005..7d3f919 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/ItemRenderController.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/ItemViewBuilder.php
@@ -2,21 +2,21 @@
 
 /**
  * @file
- * Contains \Drupal\aggregator\ItemRenderController.
+ * Contains \Drupal\aggregator\ItemViewBuilder.
  */
 
 namespace Drupal\aggregator;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilder;
 
 /**
  * Render controller for aggregator feed items.
  */
-class ItemRenderController extends EntityRenderController {
+class ItemViewBuilder extends EntityViewBuilder {
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::getBuildDefaults().
+   * {@inheritdoc}
    */
   protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langcode) {
     $defaults = parent::getBuildDefaults($entity, $view_mode, $langcode);
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/aggregator/processor/DefaultProcessor.php b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/aggregator/processor/DefaultProcessor.php
index ec7d193..a511ebb 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Plugin/aggregator/processor/DefaultProcessor.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Plugin/aggregator/processor/DefaultProcessor.php
@@ -143,7 +143,7 @@ public function process(Feed $feed) {
       return;
     }
     foreach ($feed->items as $item) {
-      // @todo: The default entity render controller always returns an empty
+      // @todo: The default entity view builder always returns an empty
       //   array, which is ignored in aggregator_save_item() currently. Should
       //   probably be fixed.
       if (empty($item['title'])) {
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockRenderController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockViewBuilder.php
similarity index 71%
rename from core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockRenderController.php
rename to core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockViewBuilder.php
index 3457115..6be784e 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockRenderController.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockViewBuilder.php
@@ -2,22 +2,22 @@
 
 /**
  * @file
- * Contains \Drupal\custom_block\CustomBlockRenderController.
+ * Contains \Drupal\custom_block\CustomBlockViewBuilder.
  */
 
 namespace Drupal\custom_block;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilder;
 use Drupal\entity\Entity\EntityDisplay;
 
 /**
  * Render controller for custom blocks.
  */
-class CustomBlockRenderController extends EntityRenderController {
+class CustomBlockViewBuilder extends EntityViewBuilder {
 
   /**
-   * Overrides \Drupal\Core\Entity\EntityRenderController::alterBuild().
+   * {@inheritdoc}
    */
   protected function alterBuild(array &$build, EntityInterface $entity, EntityDisplay $display, $view_mode, $langcode = NULL) {
     parent::alterBuild($build, $entity, $display, $view_mode, $langcode);
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
index 2044050..af75e84 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Entity/CustomBlock.php
@@ -25,7 +25,7 @@
  *     "storage" = "Drupal\custom_block\CustomBlockStorageController",
  *     "access" = "Drupal\custom_block\CustomBlockAccessController",
  *     "list" = "Drupal\custom_block\CustomBlockListController",
- *     "render" = "Drupal\custom_block\CustomBlockRenderController",
+ *     "view_builder" = "Drupal\custom_block\CustomBlockViewBuilder",
  *     "form" = {
  *       "add" = "Drupal\custom_block\CustomBlockFormController",
  *       "edit" = "Drupal\custom_block\CustomBlockFormController",
diff --git a/core/modules/block/lib/Drupal/block/BlockPluginInterface.php b/core/modules/block/lib/Drupal/block/BlockPluginInterface.php
index b5433e6..f05af11 100644
--- a/core/modules/block/lib/Drupal/block/BlockPluginInterface.php
+++ b/core/modules/block/lib/Drupal/block/BlockPluginInterface.php
@@ -40,7 +40,7 @@ public function access();
    * @return array
    *   A renderable array representing the content of the block.
    *
-   * @see \Drupal\block\BlockRenderController
+   * @see \Drupal\block\BlockViewBuilder
    */
   public function build();
 
diff --git a/core/modules/block/lib/Drupal/block/BlockRenderController.php b/core/modules/block/lib/Drupal/block/BlockViewBuilder.php
similarity index 76%
rename from core/modules/block/lib/Drupal/block/BlockRenderController.php
rename to core/modules/block/lib/Drupal/block/BlockViewBuilder.php
index 68599a5..bfc136b 100644
--- a/core/modules/block/lib/Drupal/block/BlockRenderController.php
+++ b/core/modules/block/lib/Drupal/block/BlockViewBuilder.php
@@ -2,28 +2,28 @@
 
 /**
  * @file
- * Contains \Drupal\block\BlockRenderController.
+ * Contains \Drupal\block\BlockViewBuilder.
  */
 
 namespace Drupal\block;
 
-use Drupal\Core\Entity\EntityRenderControllerInterface;
+use Drupal\Core\Entity\EntityViewBuilderInterface;
 use Drupal\Core\Entity\EntityInterface;
 
 /**
- * Provides a Block render controller.
+ * Provides a Block view builder.
  */
-class BlockRenderController implements EntityRenderControllerInterface {
+class BlockViewBuilder implements EntityViewBuilderInterface {
 
   /**
-   * Implements \Drupal\Core\Entity\EntityRenderControllerInterface::buildContent().
+   * {@inheritdoc}
    */
   public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) {
     return array();
   }
 
   /**
-   * Implements Drupal\Core\Entity\EntityRenderControllerInterface::view().
+   * {@inheritdoc}
    */
   public function view(EntityInterface $entity, $view_mode = 'full', $langcode = NULL) {
     $build = $this->viewMultiple(array($entity), $view_mode, $langcode);
@@ -31,7 +31,7 @@ public function view(EntityInterface $entity, $view_mode = 'full', $langcode = N
   }
 
   /**
-   * Implements Drupal\Core\Entity\EntityRenderControllerInterface::viewMultiple().
+   * {@inheritdoc}
    */
   public function viewMultiple(array $entities = array(), $view_mode = 'full', $langcode = NULL) {
     $build = array();
diff --git a/core/modules/block/lib/Drupal/block/Entity/Block.php b/core/modules/block/lib/Drupal/block/Entity/Block.php
index f921834..522ec61 100644
--- a/core/modules/block/lib/Drupal/block/Entity/Block.php
+++ b/core/modules/block/lib/Drupal/block/Entity/Block.php
@@ -24,7 +24,7 @@
  *   controllers = {
  *     "storage" = "Drupal\Core\Config\Entity\ConfigStorageController",
  *     "access" = "Drupal\block\BlockAccessController",
- *     "render" = "Drupal\block\BlockRenderController",
+ *     "view_builder" = "Drupal\block\BlockViewBuilder",
  *     "list" = "Drupal\block\BlockListController",
  *     "form" = {
  *       "default" = "Drupal\block\BlockFormController",
diff --git a/core/modules/book/lib/Drupal/book/BookExport.php b/core/modules/book/lib/Drupal/book/BookExport.php
index 62a5148..bf639a7 100644
--- a/core/modules/book/lib/Drupal/book/BookExport.php
+++ b/core/modules/book/lib/Drupal/book/BookExport.php
@@ -26,11 +26,11 @@ class BookExport {
   protected $nodeStorage;
 
   /**
-   * The node render controller.
+   * The node view builder.
    *
-   * @var \Drupal\Core\Entity\EntityRenderControllerInterface
+   * @var \Drupal\Core\Entity\EntityViewBuilderInterface
    */
-  protected $nodeRender;
+  protected $viewBuilder;
 
   /**
    * Constructs a BookExport object.
@@ -40,7 +40,7 @@ class BookExport {
    */
   public function __construct(EntityManager $entityManager) {
     $this->nodeStorage = $entityManager->getStorageController('node');
-    $this->nodeRender = $entityManager->getRenderController('node');
+    $this->viewBuilder = $entityManager->getViewBuilder('node');
   }
 
   /**
@@ -125,7 +125,7 @@ protected function exportTraverse(array $tree, $callable) {
    * @see \Drupal\book\BookExport::exportTraverse()
    */
   protected function bookNodeExport(NodeInterface $node, $children = '') {
-    $build = $this->nodeRender->view($node, 'print', NULL);
+    $build = $this->viewBuilder->view($node, 'print', NULL);
     unset($build['#theme']);
 
     // @todo Rendering should happen in the template using render().
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index fb2f320..e653a5c 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -1346,7 +1346,7 @@ function comment_get_display_ordinal($cid, $instance) {
   else {
     // For threaded comments, the c.thread column is used for ordering. We can
     // use the sorting code for comparison, but must remove the trailing slash.
-    // See CommentRenderController.
+    // See CommentViewBuilder.
     $query->where('SUBSTRING(c1.thread, 1, (LENGTH(c1.thread) -1)) < SUBSTRING(c2.thread, 1, (LENGTH(c2.thread) -1))');
   }
 
@@ -1463,7 +1463,7 @@ function comment_preprocess_block(&$variables) {
  *   A user account, for use with theme_username() or the user_picture template.
  */
 function comment_prepare_author(CommentInterface $comment) {
-  // The account has been pre-loaded by CommentRenderController::buildContent().
+  // The account has been pre-loaded by CommentViewBuilder::buildContent().
   $account = $comment->uid->entity;
   if (empty($account->uid->value)) {
     $account = entity_create('user', array('uid' => 0, 'name' => $comment->name->value, 'homepage' => $comment->homepage->value));
diff --git a/core/modules/comment/lib/Drupal/comment/CommentRenderController.php b/core/modules/comment/lib/Drupal/comment/CommentViewBuilder.php
similarity index 93%
rename from core/modules/comment/lib/Drupal/comment/CommentRenderController.php
rename to core/modules/comment/lib/Drupal/comment/CommentViewBuilder.php
index b577b27..cd078da 100644
--- a/core/modules/comment/lib/Drupal/comment/CommentRenderController.php
+++ b/core/modules/comment/lib/Drupal/comment/CommentViewBuilder.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Definition of Drupal\comment\CommentRenderController.
+ * Definition of Drupal\comment\CommentViewBuilder.
  */
 
 namespace Drupal\comment;
@@ -10,8 +10,9 @@
 use Drupal\Core\Entity\EntityControllerInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityManager;
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilderInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Entity\EntityViewBuilder;
 use Drupal\entity\Entity\EntityDisplay;
 use Drupal\field\FieldInfo;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -19,7 +20,7 @@
 /**
  * Render controller for comments.
  */
-class CommentRenderController extends EntityRenderController implements EntityControllerInterface {
+class CommentViewBuilder extends EntityViewBuilder implements EntityViewBuilderInterface {
 
   /**
    * The entity manager service.
@@ -83,6 +84,8 @@ public function __construct($entity_type, EntityManager $entity_manager, FieldIn
    *   Thrown when a comment is attached to an entity that no longer exists.
    */
   public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) {
+    // In addition to modifying the content key on entities, this implementation
+    // will also set the node key which all comments carry.
     $return = array();
     if (empty($entities)) {
       return $return;
@@ -144,7 +147,7 @@ public function buildContent(array $entities, array $displays, $view_mode, $lang
   }
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::alterBuild().
+   * {@inheritdoc}
    */
   protected function alterBuild(array &$build, EntityInterface $comment, EntityDisplay $display, $view_mode, $langcode = NULL) {
     parent::alterBuild($build, $comment, $display, $view_mode, $langcode);
diff --git a/core/modules/comment/lib/Drupal/comment/Controller/CommentController.php b/core/modules/comment/lib/Drupal/comment/Controller/CommentController.php
index 7775219..bf83137 100644
--- a/core/modules/comment/lib/Drupal/comment/Controller/CommentController.php
+++ b/core/modules/comment/lib/Drupal/comment/Controller/CommentController.php
@@ -275,7 +275,7 @@ public function getReplyForm(Request $request, $entity_type, $entity_id, $field_
           return new RedirectResponse($this->urlGenerator()->generateFromPath($uri['path'], array('absolute' => TRUE)));
         }
         // Display the parent comment.
-        $build['comment_parent'] = $this->entityManager()->getRenderController('comment')->view($comment);
+        $build['comment_parent'] = $this->entityManager()->getViewBuilder('comment')->view($comment);
       }
 
       // The comment is in response to a entity.
@@ -284,7 +284,7 @@ public function getReplyForm(Request $request, $entity_type, $entity_id, $field_
         // redirect loop.
         $entity->{$field_name}->status = COMMENT_HIDDEN;
         // Render array of the entity full view mode.
-        $build['commented_entity'] = $this->entityManager()->getRenderController($entity->entityType())->view($entity, 'full');
+        $build['commented_entity'] = $this->entityManager()->getViewBuilder($entity->entityType())->view($entity, 'full');
         unset($build['commented_entity']['#cache']);
         $entity->{$field_name}->status = $status;
       }
diff --git a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
index 5bddea1..aa192d5 100644
--- a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
@@ -25,7 +25,7 @@
  *   controllers = {
  *     "storage" = "Drupal\comment\CommentStorageController",
  *     "access" = "Drupal\comment\CommentAccessController",
- *     "render" = "Drupal\comment\CommentRenderController",
+ *     "view_builder" = "Drupal\comment\CommentViewBuilder",
  *     "form" = {
  *       "default" = "Drupal\comment\CommentFormController",
  *       "delete" = "Drupal\comment\Form\DeleteForm"
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentNonNodeTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentNonNodeTest.php
index e269aa5..2a88932 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentNonNodeTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentNonNodeTest.php
@@ -12,7 +12,7 @@
 use Drupal\Core\Entity\EntityInterface;
 
 /**
- * Tests basic comment functionality against the entity_test_render entity type.
+ * Tests basic comment functionality against the entity_test entity type.
  */
 class CommentNonNodeTest extends WebTestBase {
 
@@ -36,10 +36,10 @@ public static function getInfo() {
   function setUp() {
     parent::setUp();
 
-    // Create a bundle for entity_test_render.
-    entity_test_create_bundle('entity_test_render', 'Entity Test Render', 'entity_test_render');
-    // Create comment field on entity_test_render bundle.
-    $this->container->get('comment.manager')->addDefaultField('entity_test_render', 'entity_test_render');
+    // Create a bundle for entity_test.
+    entity_test_create_bundle('entity_test', 'Entity Test Render', 'entity_test');
+    // Create comment field on entity_test bundle.
+    $this->container->get('comment.manager')->addDefaultField('entity_test', 'entity_test');
 
     // Create test user.
     $this->admin_user = $this->drupalCreateUser(array(
@@ -65,8 +65,8 @@ function setUp() {
 
     // Create a test entity.
     $random_label = $this->randomName();
-    $data = array('type' => 'entity_test_render', 'name' => $random_label);
-    $this->entity = entity_create('entity_test_render', $data);
+    $data = array('type' => 'entity_test', 'name' => $random_label);
+    $this->entity = entity_create('entity_test', $data);
     $this->entity->save();
   }
 
@@ -87,13 +87,13 @@ function postComment(EntityInterface $entity, $comment, $subject = '', $contact
     $edit = array();
     $edit['comment_body[0][value]'] = $comment;
 
-    $instance = $this->container->get('field.info')->getInstance('entity_test_render', 'entity_test_render', 'comment');
+    $instance = $this->container->get('field.info')->getInstance('entity_test', 'entity_test', 'comment');
     $preview_mode = $instance['settings']['preview'];
     $subject_mode = $instance['settings']['subject'];
 
     // Must get the page before we test for fields.
     if ($entity !== NULL) {
-      $this->drupalGet('comment/reply/entity_test_render/' . $entity->id() . '/comment');
+      $this->drupalGet('comment/reply/entity_test/' . $entity->id() . '/comment');
     }
 
     if ($subject_mode == TRUE) {
@@ -225,15 +225,15 @@ function getUnapprovedComment($subject) {
    */
   function testCommentFunctionality() {
     $limited_user = $this->drupalCreateUser(array(
-      'administer entity_test_render fields'
+      'administer entity_test fields'
     ));
     $this->drupalLogin($limited_user);
     // Test that default field exists.
-    $this->drupalGet('admin/structure/entity-test-render/manage/entity_test_render/fields');
+    $this->drupalGet('admin/structure/entity-test/manage/entity_test/fields');
     $this->assertText(t('Comment settings'));
-    $this->assertLinkByHref('admin/structure/entity-test-render/manage/entity_test_render/fields/entity_test_render.entity_test_render.comment');
+    $this->assertLinkByHref('admin/structure/entity-test/manage/entity_test/fields/entity_test.entity_test.comment');
     // Test widget hidden option is not visible when there's no comments.
-    $this->drupalGet('admin/structure/entity-test-render/manage/entity_test_render/entity-test-render/fields/entity_test_render.entity_test_render.comment');
+    $this->drupalGet('admin/structure/entity-test/manage/entity_test/entity-test/fields/entity_test.entity_test.comment');
     $this->assertNoField('edit-default-value-input-comment-und-0-status-0');
 
     $this->drupalLogin($this->admin_user);
@@ -243,7 +243,7 @@ function testCommentFunctionality() {
     $this->assertTrue($this->commentExists($comment1), 'Comment on test entity exists.');
 
     // Assert the breadcrumb is valid.
-    $this->drupalGet('comment/reply/entity_test_render/' . $this->entity->id() . '/comment');
+    $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment');
     $this->assertLink($this->entity->label());
 
     // Unpublish the comment.
@@ -289,12 +289,12 @@ function testCommentFunctionality() {
     ));
 
     // Attempt to view comments while disallowed.
-    $this->drupalGet('entity-test-render/' . $this->entity->id());
+    $this->drupalGet('entity-test/' . $this->entity->id());
     $this->assertNoPattern('@<h2[^>]*>Comments</h2>@', 'Comments were not displayed.');
     $this->assertNoLink('Add new comment', 'Link to add comment was found.');
 
     // Attempt to view test entity comment form while disallowed.
-    $this->drupalGet('comment/reply/entity_test_render/' . $this->entity->id() . '/comment');
+    $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment');
     $this->assertText('You are not authorized to post comments', 'Error attempting to post comment.');
     $this->assertNoFieldByName('subject', '', 'Subject field not found.');
     $this->assertNoFieldByName('comment_body[0][value]', '', 'Comment field not found.');
@@ -307,8 +307,8 @@ function testCommentFunctionality() {
     ));
     // We've changed role permissions, so need to reset render cache.
     // @todo Revisit after https://drupal.org/node/2099105
-    \Drupal::entityManager()->getRenderController('entity_test_render')->resetCache(array($this->entity->id()));
-    $this->drupalGet('entity-test-render/' . $this->entity->id());
+    \Drupal::entityManager()->getRenderController('entity_test')->resetCache(array($this->entity->id()));
+    $this->drupalGet('entity-test/' . $this->entity->id());
     $this->assertPattern('@<h2[^>]*>Comments</h2>@', 'Comments were displayed.');
     $this->assertLink('Log in', 0, 'Link to log in was found.');
     $this->assertLink('register', 0, 'Link to register was found.');
@@ -326,37 +326,37 @@ function testCommentFunctionality() {
     ));
     // We've changed role permissions, so need to reset render cache.
     // @todo Revisit after https://drupal.org/node/2099105
-    \Drupal::entityManager()->getRenderController('entity_test_render')->resetCache(array($this->entity->id()));
-    $this->drupalGet('entity-test-render/' . $this->entity->id());
+    \Drupal::entityManager()->getRenderController('entity_test')->resetCache(array($this->entity->id()));
+    $this->drupalGet('entity-test/' . $this->entity->id());
     $this->assertNoPattern('@<h2[^>]*>Comments</h2>@', 'Comments were not displayed.');
     $this->assertFieldByName('subject', '', 'Subject field found.');
     $this->assertFieldByName('comment_body[0][value]', '', 'Comment field found.');
 
-    $this->drupalGet('comment/reply/entity_test_render/' . $this->entity->id() . '/comment/' . $comment1->id());
+    $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment/' . $comment1->id());
     $this->assertText('You are not authorized to view comments');
     $this->assertNoText($comment1->subject->value, 'Comment not displayed.');
 
     // Test comment field widget changes.
     $limited_user = $this->drupalCreateUser(array(
-      'administer entity_test_render fields',
+      'administer entity_test fields',
       'view test entity',
       'administer entity_test content',
     ));
     $this->drupalLogin($limited_user);
-    $this->drupalGet('admin/structure/entity-test-render/manage/entity_test_render/fields/entity_test_render.entity_test_render.comment');
+    $this->drupalGet('admin/structure/entity-test/manage/entity_test/fields/entity_test.entity_test.comment');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-0');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-1');
     $this->assertFieldChecked('edit-default-value-input-comment-0-status-2');
     // Test comment option change in field settings.
     $edit = array('default_value_input[comment][0][status]' => COMMENT_CLOSED);
     $this->drupalPostForm(NULL, $edit, t('Save settings'));
-    $this->drupalGet('admin/structure/entity-test-render/manage/entity_test_render/fields/entity_test_render.entity_test_render.comment');
+    $this->drupalGet('admin/structure/entity-test/manage/entity_test/fields/entity_test.entity_test.comment');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-0');
     $this->assertFieldChecked('edit-default-value-input-comment-0-status-1');
     $this->assertNoFieldChecked('edit-default-value-input-comment-0-status-2');
 
     // Add a new comment field.
-    $this->drupalGet('admin/structure/entity-test-render/manage/entity_test_render/fields');
+    $this->drupalGet('admin/structure/entity-test/manage/entity_test/fields');
     $edit = array(
       'fields[_add_new_field][label]' => 'Foobar',
       'fields[_add_new_field][field_name]' => 'foobar',
@@ -369,15 +369,15 @@ function testCommentFunctionality() {
 
     // Test the new entity commenting inherits default.
     $random_label = $this->randomName();
-    $data = array('bundle' => 'entity_test_render', 'name' => $random_label);
-    $new_entity = entity_create('entity_test_render', $data);
+    $data = array('bundle' => 'entity_test', 'name' => $random_label);
+    $new_entity = entity_create('entity_test', $data);
     $new_entity->save();
-    $this->drupalGet('entity_test_render/manage/' . $new_entity->id() . '/edit');
+    $this->drupalGet('entity_test/manage/' . $new_entity->id() . '/edit');
     $this->assertNoFieldChecked('edit-field-foobar-0-status-1');
     $this->assertFieldChecked('edit-field-foobar-0-status-2');
     $this->assertNoField('edit-field-foobar-0-status-0');
 
-    $this->drupalGet('comment/reply/entity_test_render/comment/' . $new_entity->id());
+    $this->drupalGet('comment/reply/entity_test/comment/' . $new_entity->id());
     $this->assertNoFieldByName('subject', '', 'Subject field found.');
     $this->assertNoFieldByName('comment_body[0][value]', '', 'Comment field found.');
   }
diff --git a/core/modules/contact/lib/Drupal/contact/Entity/Message.php b/core/modules/contact/lib/Drupal/contact/Entity/Message.php
index f81b456..2b9e87d 100644
--- a/core/modules/contact/lib/Drupal/contact/Entity/Message.php
+++ b/core/modules/contact/lib/Drupal/contact/Entity/Message.php
@@ -19,7 +19,7 @@
  *   module = "contact",
  *   controllers = {
  *     "storage" = "Drupal\Core\Entity\DatabaseStorageControllerNG",
- *     "render" = "Drupal\contact\MessageRenderController",
+ *     "view_builder" = "Drupal\contact\MessageViewBuilder",
  *     "form" = {
  *       "default" = "Drupal\contact\MessageFormController"
  *     }
diff --git a/core/modules/contact/lib/Drupal/contact/MessageRenderController.php b/core/modules/contact/lib/Drupal/contact/MessageViewBuilder.php
similarity index 83%
rename from core/modules/contact/lib/Drupal/contact/MessageRenderController.php
rename to core/modules/contact/lib/Drupal/contact/MessageViewBuilder.php
index f8aca5d..4feeb4f 100644
--- a/core/modules/contact/lib/Drupal/contact/MessageRenderController.php
+++ b/core/modules/contact/lib/Drupal/contact/MessageViewBuilder.php
@@ -2,21 +2,21 @@
 
 /**
  * @file
- * Contains Drupal\contact\MessageRenderController.
+ * Contains Drupal\contact\MessageViewBuilder.
  */
 
 namespace Drupal\contact;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilder;
 
 /**
  * Render controller for contact messages.
  */
-class MessageRenderController extends EntityRenderController {
+class MessageViewBuilder extends EntityViewBuilder {
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::buildContent().
+   * {@inheritdoc}
    */
   public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) {
     parent::buildContent($entities, $displays, $view_mode, $langcode);
@@ -35,7 +35,7 @@ public function buildContent(array $entities, array $displays, $view_mode, $lang
   }
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::view().
+   * {@inheritdoc}
    */
   public function view(EntityInterface $entity, $view_mode = 'full', $langcode = NULL) {
     $build = parent::view($entity, $view_mode, $langcode);
diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
index eab0b66..645102b 100644
--- a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
+++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
@@ -134,7 +134,7 @@ public function save() {
 
     // Reset the render cache for the target entity type.
     if (\Drupal::entityManager()->hasController($this->targetEntityType, 'render')) {
-      \Drupal::entityManager()->getRenderController($this->targetEntityType)->resetCache();
+      \Drupal::entityManager()->getViewBuilder($this->targetEntityType)->resetCache();
     }
 
     return $return;
diff --git a/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayModeTest.php b/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayModeTest.php
index fc74bb0..73e2136 100644
--- a/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayModeTest.php
+++ b/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayModeTest.php
@@ -44,7 +44,7 @@ public function testEntityViewModeUI() {
     $this->assertResponse(404);
 
     $this->drupalGet('admin/structure/display-modes/view/add');
-    $this->assertNoLink(t('Test entity'), 'An entity type with no render controller cannot have view modes.');
+    $this->assertNoLink(t('Test entity'), 'An entity type with no view builder cannot have view modes.');
 
     // Test adding a view mode.
     $this->clickLink(t('Test render entity'));
@@ -56,7 +56,7 @@ public function testEntityViewModeUI() {
     $this->assertRaw(t('Saved the %label view mode.', array('%label' => $edit['label'])));
 
     // Test editing the view mode.
-    $this->drupalGet('admin/structure/display-modes/view/manage/entity_test_render.' . $edit['id']);
+    $this->drupalGet('admin/structure/display-modes/view/manage/entity_test.' . $edit['id']);
 
     // Test deleting the view mode.
     $this->drupalPostForm(NULL, NULL, t('Delete'));
@@ -76,7 +76,11 @@ public function testEntityFormModeUI() {
     $this->drupalGet('admin/structure/display-modes/form');
     $this->assertResponse(200);
 
+<<<<<<< HEAD
     $this->drupalGet('admin/structure/display-modes/form/add/entity_test_no_label');
+=======
+    $this->drupalGet('admin/structure/display-modes/form/add/entity_test');
+>>>>>>> view builder
     $this->assertResponse(404);
 
     $this->drupalGet('admin/structure/display-modes/form/add');
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceFormatterTest.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceFormatterTest.php
index fc4c4bf..44bcca1 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceFormatterTest.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceFormatterTest.php
@@ -21,14 +21,14 @@ class EntityReferenceFormatterTest extends EntityUnitTestBase {
    *
    * @var string
    */
-  protected $entityType = 'entity_test_render';
+  protected $entityType = 'entity_test';
 
   /**
    * The bundle used in this test.
    *
    * @var string
    */
-  protected $bundle = 'entity_test_render';
+  protected $bundle = 'entity_test';
 
   /**
    * The name of the field used in this test.
diff --git a/core/modules/file/lib/Drupal/file/Entity/File.php b/core/modules/file/lib/Drupal/file/Entity/File.php
index b891253..862e201 100644
--- a/core/modules/file/lib/Drupal/file/Entity/File.php
+++ b/core/modules/file/lib/Drupal/file/Entity/File.php
@@ -24,7 +24,7 @@
  *   module = "file",
  *   controllers = {
  *     "storage" = "Drupal\file\FileStorageController",
- *     "render" = "Drupal\Core\Entity\EntityRenderController"
+ *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder"
  *   },
  *   base_table = "file_managed",
  *   entity_keys = {
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php b/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
index 0fc739a..451d415 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/Entity/MenuLink.php
@@ -27,7 +27,7 @@
  *   controllers = {
  *     "storage" = "Drupal\menu_link\MenuLinkStorageController",
  *     "access" = "Drupal\menu_link\MenuLinkAccessController",
- *     "render" = "Drupal\Core\Entity\EntityRenderController",
+ *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
  *     "form" = {
  *       "default" = "Drupal\menu_link\MenuLinkFormController"
  *     }
diff --git a/core/modules/node/lib/Drupal/node/Entity/Node.php b/core/modules/node/lib/Drupal/node/Entity/Node.php
index 1d13b76..1c7ab6d 100644
--- a/core/modules/node/lib/Drupal/node/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/Entity/Node.php
@@ -23,7 +23,7 @@
  *   module = "node",
  *   controllers = {
  *     "storage" = "Drupal\node\NodeStorageController",
- *     "render" = "Drupal\node\NodeRenderController",
+ *     "view_builder" = "Drupal\node\NodeViewBuilder",
  *     "access" = "Drupal\node\NodeAccessController",
  *     "form" = {
  *       "default" = "Drupal\node\NodeFormController",
diff --git a/core/modules/node/lib/Drupal/node/NodeRenderController.php b/core/modules/node/lib/Drupal/node/NodeViewBuilder.php
similarity index 89%
rename from core/modules/node/lib/Drupal/node/NodeRenderController.php
rename to core/modules/node/lib/Drupal/node/NodeViewBuilder.php
index 433adb3..020951f 100644
--- a/core/modules/node/lib/Drupal/node/NodeRenderController.php
+++ b/core/modules/node/lib/Drupal/node/NodeViewBuilder.php
@@ -2,22 +2,22 @@
 
 /**
  * @file
- * Definition of Drupal\node\NodeRenderController.
+ * Definition of Drupal\node\NodeViewBuilder.
  */
 
 namespace Drupal\node;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilder;
 use Drupal\entity\Entity\EntityDisplay;
 
 /**
  * Render controller for nodes.
  */
-class NodeRenderController extends EntityRenderController {
+class NodeViewBuilder extends EntityViewBuilder {
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::buildContent().
+   * {@inheritdoc}
    */
   public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) {
     $return = array();
@@ -78,7 +78,7 @@ public function buildContent(array $entities, array $displays, $view_mode, $lang
   }
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::alterBuild().
+   * {@inheritdoc}
    */
   protected function alterBuild(array &$build, EntityInterface $entity, EntityDisplay $display, $view_mode, $langcode = NULL) {
     parent::alterBuild($build, $entity, $display, $view_mode, $langcode);
diff --git a/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php b/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
index bf987e6..6b69108 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
@@ -225,7 +225,7 @@ public function execute() {
       ->execute();
 
     $node_storage = $this->entityManager->getStorageController('node');
-    $node_render = $this->entityManager->getRenderController('node');
+    $node_render = $this->entityManager->getViewBuilder('node');
 
     foreach ($find as $item) {
       // Render the node.
@@ -322,7 +322,7 @@ protected function indexNode(EntityInterface $node) {
     $this->state->set('node.cron_last', $node->getChangedTime());
 
     $languages = $node->getTranslationLanguages();
-    $node_render = $this->entityManager->getRenderController('node');
+    $node_render = $this->entityManager->getViewBuilder('node');
 
     foreach ($languages as $language) {
       // Render the node.
diff --git a/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php b/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php
index c9d97c0..9ad3373 100644
--- a/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/SummaryLengthTest.php
@@ -35,7 +35,7 @@ function testSummaryLength() {
     $web_user = $this->drupalCreateUser(array('access content', 'administer content types'));
     $this->loggedInUser = $web_user;
 
-    $controller = $this->container->get('entity.manager')->getRenderController('node');
+    $controller = $this->container->get('entity.manager')->getViewBuilder('node');
     // Render the node as a teaser.
     $content = $controller->view($node, 'teaser');
     $this->assertTrue(strlen($content['body'][0]['#markup']) < 600, 'Teaser is less than 600 characters long.');
diff --git a/core/modules/rdf/lib/Drupal/rdf/Entity/RdfMapping.php b/core/modules/rdf/lib/Drupal/rdf/Entity/RdfMapping.php
index 9464a56..094aa19 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Entity/RdfMapping.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Entity/RdfMapping.php
@@ -173,7 +173,7 @@ public function postSave(EntityStorageControllerInterface $storage_controller, $
     parent::postSave($storage_controller, $update);
 
     if (\Drupal::entityManager()->hasController($this->targetEntityType, 'render')) {
-      \Drupal::entityManager()->getRenderController($this->targetEntityType)->resetCache();
+      \Drupal::entityManager()->getViewBuilder($this->targetEntityType)->resetCache();
     }
   }
 
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaDatatypeCallbackTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaDatatypeCallbackTest.php
index 91153df..1057a42 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaDatatypeCallbackTest.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaDatatypeCallbackTest.php
@@ -35,7 +35,7 @@ public function setUp() {
     $this->createTestField();
 
     // Add the mapping.
-    $mapping = rdf_get_mapping('entity_test_render', 'entity_test_render');
+    $mapping = rdf_get_mapping('entity_test', 'entity_test');
     $mapping->setFieldMapping($this->fieldName, array(
       'properties' => array('schema:interactionCount'),
       'datatype_callback' => array(
@@ -45,7 +45,7 @@ public function setUp() {
 
     // Set up test values.
     $this->test_value = $this->randomName();
-    $this->entity = entity_create('entity_test_render', array());
+    $this->entity = entity_create('entity_test', array());
     $this->entity->{$this->fieldName}->value = $this->test_value;
     $this->entity->save();
 
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php
index 8fdaef3..d2cdaf0 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/FieldRdfaTestBase.php
@@ -60,7 +60,7 @@
   protected function assertFormatterRdfa($formatter, $property, $value, $object_type = 'literal') {
     // The field formatter will be rendered inside the entity. Set the field
     // formatter in the entity display options before rendering the entity.
-    entity_get_display('entity_test_render', 'entity_test_render', 'default')
+    entity_get_display('entity_test', 'entity_test', 'default')
       ->setComponent($this->fieldName, array('type' => $formatter))
       ->save();
     $build = entity_view($this->entity, 'default');
@@ -80,13 +80,13 @@ protected function assertFormatterRdfa($formatter, $property, $value, $object_ty
   protected function createTestField() {
     entity_create('field_entity', array(
       'name' => $this->fieldName,
-      'entity_type' => 'entity_test_render',
+      'entity_type' => 'entity_test',
       'type' => $this->fieldType,
     ))->save();
     entity_create('field_instance', array(
-      'entity_type' => 'entity_test_render',
+      'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
-      'bundle' => 'entity_test_render',
+      'bundle' => 'entity_test',
     ))->save();
   }
 
diff --git a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/TaxonomyTermReferenceRdfaTest.php b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/TaxonomyTermReferenceRdfaTest.php
index 38ee919..0f15790 100644
--- a/core/modules/rdf/lib/Drupal/rdf/Tests/Field/TaxonomyTermReferenceRdfaTest.php
+++ b/core/modules/rdf/lib/Drupal/rdf/Tests/Field/TaxonomyTermReferenceRdfaTest.php
@@ -60,7 +60,7 @@ public function setUp() {
 
     entity_create('field_entity', array(
       'name' => $this->fieldName,
-      'entity_type' => 'entity_test_render',
+      'entity_type' => 'entity_test',
       'type' => 'taxonomy_term_reference',
       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
       'settings' => array(
@@ -73,9 +73,9 @@ public function setUp() {
       ),
     ))->save();
     entity_create('field_instance', array(
-      'entity_type' => 'entity_test_render',
+      'entity_type' => 'entity_test',
       'field_name' => $this->fieldName,
-      'bundle' => 'entity_test_render',
+      'bundle' => 'entity_test',
     ))->save();
 
     $this->term = entity_create('taxonomy_term', array(
@@ -86,13 +86,13 @@ public function setUp() {
     $this->term->save();
 
     // Add the mapping.
-    $mapping = rdf_get_mapping('entity_test_render', 'entity_test_render');
+    $mapping = rdf_get_mapping('entity_test', 'entity_test');
     $mapping->setFieldMapping($this->fieldName, array(
       'properties' => array('schema:about'),
     ))->save();
 
     // Set up test values.
-    $this->entity = entity_create('entity_test_render', array());
+    $this->entity = entity_create('entity_test', array());
     $this->entity->{$this->fieldName}->target_id = $this->term->id();
     $this->entity->save();
     $this->uri = $this->getAbsoluteUri($this->entity);
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityManagerTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityManagerTest.php
index bb445a8..ccc0588 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityManagerTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityManagerTest.php
@@ -34,7 +34,7 @@ public function testMethods() {
     $this->assertFalse($entity_manager->hasController('non_existent', 'non_existent'), 'A non existent entity type has no controller.');
 
     $this->assertFalse($entity_manager->hasController('entity_test', 'non_existent'), 'An existent entity type does not have a non existent controller.');
-    $this->assertFalse($entity_manager->hasController('entity_test', 'render'), 'The test entity does not have specified the render controller.');
+    $this->assertFalse($entity_manager->hasController('entity_test', 'render'), 'The test entity does not have specified the view builder.');
 
     $this->assertTrue($entity_manager->hasController('entity_test', 'storage'), 'The test entity has specified the controller class');
   }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityRenderTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewBuilderTest.php
similarity index 76%
rename from core/modules/system/lib/Drupal/system/Tests/Entity/EntityRenderTest.php
rename to core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewBuilderTest.php
index 9836c7d..b649cf6 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityRenderTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewBuilderTest.php
@@ -2,15 +2,15 @@
 
 /**
  * @file
- * Contains \Drupal\system\Tests\Entity\EntityRenderTest.
+ * Contains \Drupal\system\Tests\Entity\EntityViewBuilderTest.
  */
 
 namespace Drupal\system\Tests\Entity;
 
 /**
- * Tests the Entity Render Controller.
+ * Tests the entity view builder.
  */
-class EntityRenderTest extends EntityUnitTestBase {
+class EntityViewBuilderTest extends EntityUnitTestBase {
 
   /**
    * Modules to enable.
@@ -22,7 +22,7 @@ class EntityRenderTest extends EntityUnitTestBase {
   public static function getInfo() {
     return array(
       'name' => 'Entity rendering',
-      'description' => 'Tests the entity render controller.',
+      'description' => 'Tests the entity view builder.',
       'group' => 'Entity API',
     );
   }
@@ -38,21 +38,21 @@ public function setUp() {
   /**
    * Tests entity render cache handling.
    */
-  public function testEntityRenderCache() {
+  public function testEntityViewBuilderCache() {
     // Force a request via GET so we can get drupal_render() cache working.
     $request_method = $_SERVER['REQUEST_METHOD'];
     $this->container->get('request')->setMethod('GET');
 
-    $entity_test = $this->createTestEntity('entity_test_render');
+    $entity_test = $this->createTestEntity('entity_test');
 
     // Test that new entities (before they are saved for the first time) do not
     // generate a cache entry.
-    $build = $this->container->get('entity.manager')->getRenderController('entity_test_render')->view($entity_test, 'full');
+    $build = $this->container->get('entity.manager')->getViewBuilder('entity_test')->view($entity_test, 'full');
     $this->assertFalse(isset($build['#cache']), 'The render array element of new (unsaved) entities is not cached.');
 
     // Get a fully built entity view render array.
     $entity_test->save();
-    $build = $this->container->get('entity.manager')->getRenderController('entity_test_render')->view($entity_test, 'full');
+    $build = $this->container->get('entity.manager')->getViewBuilder('entity_test')->view($entity_test, 'full');
     $cid = drupal_render_cid_create($build);
     $bin = $build['#cache']['bin'];
 
@@ -83,19 +83,19 @@ public function testEntityRenderCache() {
   /**
    * Tests entity render cache with references.
    */
-  public function testEntityRenderCacheWithReferences() {
+  public function testEntityViewBuilderCacheWithReferences() {
     // Force a request via GET so we can get drupal_render() cache working.
     $request_method = $_SERVER['REQUEST_METHOD'];
     $this->container->get('request')->setMethod('GET');
 
     // Create an entity reference field and an entity that will be referenced.
-    entity_reference_create_instance('entity_test_render', 'entity_test_render', 'reference_field', 'Reference', 'entity_test_render');
-    entity_get_display('entity_test_render', 'entity_test_render', 'full')->setComponent('reference_field')->save();
-    $entity_test_reference = $this->createTestEntity('entity_test_render');
+    entity_reference_create_instance('entity_test', 'entity_test', 'reference_field', 'Reference', 'entity_test');
+    entity_get_display('entity_test', 'entity_test', 'full')->setComponent('reference_field')->save();
+    $entity_test_reference = $this->createTestEntity('entity_test');
     $entity_test_reference->save();
 
     // Get a fully built entity view render array for the referenced entity.
-    $build = $this->container->get('entity.manager')->getRenderController('entity_test_render')->view($entity_test_reference, 'full');
+    $build = $this->container->get('entity.manager')->getViewBuilder('entity_test')->view($entity_test_reference, 'full');
     $cid_reference = drupal_render_cid_create($build);
     $bin_reference = $build['#cache']['bin'];
 
@@ -108,12 +108,12 @@ public function testEntityRenderCacheWithReferences() {
     $this->assertTrue($this->container->get('cache.' . $bin_reference)->get($cid_reference), 'The entity render element for the referenced entity has been cached.');
 
     // Create another entity that references the first one.
-    $entity_test = $this->createTestEntity('entity_test_render');
+    $entity_test = $this->createTestEntity('entity_test');
     $entity_test->reference_field->entity = $entity_test_reference;
     $entity_test->save();
 
     // Get a fully built entity view render array.
-    $build = $this->container->get('entity.manager')->getRenderController('entity_test_render')->view($entity_test, 'full');
+    $build = $this->container->get('entity.manager')->getViewBuilder('entity_test')->view($entity_test, 'full');
     $cid = drupal_render_cid_create($build);
     $bin = $build['#cache']['bin'];
 
@@ -137,23 +137,23 @@ public function testEntityRenderCacheWithReferences() {
   /**
    * Tests entity render cache toggling.
    */
-  public function testEntityRenderCacheToggling() {
-    $entity_test = $this->createTestEntity('entity_test_render');
+  public function testEntityViewBuilderCacheToggling() {
+    $entity_test = $this->createTestEntity('entity_test');
     $entity_test->save();
 
     // Test a view mode in default conditions: render caching is enabled for
     // the entity type and the view mode.
-    $build = $this->container->get('entity.manager')->getRenderController('entity_test_render')->view($entity_test, 'full');
+    $build = $this->container->get('entity.manager')->getViewBuilder('entity_test')->view($entity_test, 'full');
     $this->assertTrue(isset($build['#cache']), 'A view mode with render cache enabled has the correct output.');
 
     // Test that a view mode can opt out of render caching.
-    $build = $this->container->get('entity.manager')->getRenderController('entity_test_render')->view($entity_test, 'test');
+    $build = $this->container->get('entity.manager')->getViewBuilder('entity_test')->view($entity_test, 'test');
     $this->assertFalse(isset($build['#cache']), 'A view mode with render cache disabled has the correct output.');
 
     // Test that an entity type can opt out of render caching completely.
     $entity_test_no_cache = $this->createTestEntity('entity_test_label');
     $entity_test_no_cache->save();
-    $build = $this->container->get('entity.manager')->getRenderController('entity_test_label')->view($entity_test_no_cache, 'full');
+    $build = $this->container->get('entity.manager')->getViewBuilder('entity_test_label')->view($entity_test_no_cache, 'full');
     $this->assertFalse(isset($build['#cache']), 'An entity type can opt out of render caching regardless of view mode configuration.');
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewControllerTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewControllerTest.php
index ca3ac07..6022fa1 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewControllerTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityViewControllerTest.php
@@ -39,11 +39,11 @@ public static function getInfo() {
 
   function setUp() {
     parent::setUp();
-    // Create some dummy entity_test_render entities.
+    // Create some dummy entity_test entities.
     for ($i = 0; $i < 2; $i++) {
       $random_label = $this->randomName();
-      $data = array('bundle' => 'entity_test_render', 'name' => $random_label);
-      $entity_test = $this->container->get('entity.manager')->getStorageController('entity_test_render')->create($data);
+      $data = array('bundle' => 'entity_test', 'name' => $random_label);
+      $entity_test = $this->container->get('entity.manager')->getStorageController('entity_test')->create($data);
       $entity_test->save();
       $this->entities[] = $entity_test;
     }
@@ -55,15 +55,15 @@ function setUp() {
    */
   function testEntityViewController() {
     foreach ($this->entities as $entity) {
-      $this->drupalGet('entity-test-render/' . $entity->id());
+      $this->drupalGet('entity_test/' . $entity->id());
       $this->assertRaw($entity->label());
       $this->assertRaw('full');
 
-      $this->drupalGet('entity-test-render-converter/' . $entity->id());
+      $this->drupalGet('entity_test_converter/' . $entity->id());
       $this->assertRaw($entity->label());
       $this->assertRaw('full');
 
-      $this->drupalGet('entity-test-render-no-view-mode/' . $entity->id());
+      $this->drupalGet('entity_test_no_view_mode/' . $entity->id());
       $this->assertRaw($entity->label());
       $this->assertRaw('full');
     }
@@ -76,27 +76,27 @@ public function testFieldItemAttributes() {
     // Create a text field which will be rendered with custom item attributes.
     entity_create('field_entity', array(
       'name' => 'field_test_text',
-      'entity_type' => 'entity_test_render',
+      'entity_type' => 'entity_test',
       'type' => 'text',
     ))->save();
     entity_create('field_instance', array(
-      'entity_type' => 'entity_test_render',
+      'entity_type' => 'entity_test',
       'field_name' => 'field_test_text',
-      'bundle' => 'entity_test_render',
+      'bundle' => 'entity_test',
     ))->save();
-    entity_get_display('entity_test_render', 'entity_test_render', 'default')
+    entity_get_display('entity_test', 'entity_test', 'default')
       ->setComponent('field_test_text', array('type' => 'text_default'))
       ->save();
 
     // Create an entity and save test value in field_test_text.
     $test_value = $this->randomName();
-    $entity = entity_create('entity_test_render', array());
+    $entity = entity_create('entity_test', array());
     $entity->field_test_text = $test_value;
     $entity->save();
 
     // Browse to the entity and verify that the attribute is rendered in the
     // field item HTML markup.
-    $this->drupalGet('entity-test-render/' . $entity->id());
+    $this->drupalGet('entity_test/' . $entity->id());
     $xpath = $this->xpath('//div[@data-field-item-attr="foobar" and text()=:value]', array(':value' => $test_value));
     $this->assertTrue($xpath, 'The field item attribute has been found in the rendered output of the field.');
 
@@ -105,13 +105,13 @@ public function testFieldItemAttributes() {
     \Drupal::moduleHandler()->install(array('rdf'));
     // Set an RDF mapping for the field_test_text field. This RDF mapping will
     // be turned into RDFa attributes in the field item output.
-    $mapping = rdf_get_mapping('entity_test_render', 'entity_test_render');
+    $mapping = rdf_get_mapping('entity_test', 'entity_test');
     $mapping->setFieldMapping('field_test_text', array(
       'properties' => array('schema:text'),
     ))->save();
     // Browse to the entity and verify that the attributes from both modules
     // are rendered in the field item HTML markup.
-    $this->drupalGet('entity-test-render/' . $entity->id());
+    $this->drupalGet('entity_test/' . $entity->id());
     $xpath = $this->xpath('//div[@data-field-item-attr="foobar" and @property="schema:text" and text()=:value]', array(':value' => $test_value));
     $this->assertTrue($xpath, 'The field item attributes from both modules have been found in the rendered output of the field.');
   }
diff --git a/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test.full.yml b/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test.full.yml
new file mode 100644
index 0000000..cb44396
--- /dev/null
+++ b/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test.full.yml
@@ -0,0 +1,5 @@
+id: entity_test.full
+label: Full
+status: '0'
+cache: '1'
+targetEntityType: entity_test
diff --git a/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test.test.yml b/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test.test.yml
new file mode 100644
index 0000000..aa9b27e
--- /dev/null
+++ b/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test.test.yml
@@ -0,0 +1,5 @@
+id: entity_test.test
+label: Test
+status: '0'
+cache: '0'
+targetEntityType: entity_test
diff --git a/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test_render.full.yml b/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test_render.full.yml
deleted file mode 100644
index 4ce40f1..0000000
--- a/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test_render.full.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-id: entity_test_render.full
-label: Full
-status: '0'
-cache: '1'
-targetEntityType: entity_test_render
diff --git a/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test_render.test.yml b/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test_render.test.yml
deleted file mode 100644
index 8593b8c..0000000
--- a/core/modules/system/tests/modules/entity_test/config/entity.view_mode.entity_test_render.test.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-id: entity_test_render.test
-label: Test
-status: '0'
-cache: '0'
-targetEntityType: entity_test_render
diff --git a/core/modules/system/tests/modules/entity_test/entity_test.module b/core/modules/system/tests/modules/entity_test/entity_test.module
index 6e1153f..58f2b38 100644
--- a/core/modules/system/tests/modules/entity_test/entity_test.module
+++ b/core/modules/system/tests/modules/entity_test/entity_test.module
@@ -229,7 +229,6 @@ function entity_test_permission() {
 function entity_test_menu() {
   $items = array();
   $types = entity_test_entity_types();
-  $types[] = 'entity_test_render';
 
   foreach($types as $entity_type) {
     $items[$entity_type . '/add'] = array(
@@ -323,21 +322,6 @@ function entity_test_load($id, $reset = FALSE) {
  * @param bool $reset
  *   A boolean indicating that the internal cache should be reset.
  *
- * @return \Drupal\entity_test\Entity\EntityRenderTest
- *   The loaded entity object, or NULL if the entity cannot be loaded.
- */
-function entity_test_render_load($id, $reset = FALSE) {
-  return entity_load('entity_test_render', $id, $reset);
-}
-
-/**
- * Loads a test entity.
- *
- * @param int $id
- *   A test entity ID.
- * @param bool $reset
- *   A boolean indicating that the internal cache should be reset.
- *
  * @return \Drupal\entity_test\Entity\EntityTestRev
  *   The loaded entity object, or NULL if the entity cannot be loaded.
  */
@@ -537,7 +521,7 @@ function _entity_test_record_hooks($hook, $data) {
  */
 function entity_test_entity_prepare_view($entity_type, array $entities, array $displays) {
   // Add a dummy field item attribute on field_test_text if it exists.
-  if ($entity_type == 'entity_test_render') {
+  if ($entity_type == 'entity_test') {
     foreach ($entities as $entity) {
       if ($entity->getPropertyDefinition('field_test_text')) {
         foreach ($entity->get('field_test_text') as $item) {
diff --git a/core/modules/system/tests/modules/entity_test/entity_test.routing.yml b/core/modules/system/tests/modules/entity_test/entity_test.routing.yml
index 79e1eef..4bab92e 100644
--- a/core/modules/system/tests/modules/entity_test/entity_test.routing.yml
+++ b/core/modules/system/tests/modules/entity_test/entity_test.routing.yml
@@ -1,24 +1,24 @@
 entity_test.render:
-  path: '/entity-test-render/{entity_test_render}'
+  path: '/entity_test/{entity_test}'
   defaults:
-    _entity_view: 'entity_test_render.full'
+    _entity_view: 'entity_test.full'
   requirements:
     _access: 'TRUE'
 
 entity_test.render_options:
-  path: '/entity-test-render-converter/{foo}'
+  path: '/entity_test_converter/{foo}'
   options:
     parameters:
       foo:
-        type: 'entity:entity_test_render'
+        type: 'entity:entity_test'
   defaults:
-    _entity_view: 'entity_test_render.full'
+    _entity_view: 'entity_test.full'
   requirements:
     _access: 'TRUE'
 
 entity_test.render_no_view_mode:
-  path: '/entity-test-render-no-view-mode/{entity_test_render}'
+  path: '/entity_test_no_view_mode/{entity_test}'
   defaults:
-    _entity_view: 'entity_test_render'
+    _entity_view: 'entity_test'
   requirements:
     _access: 'TRUE'
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
index 95d74ce..bc914ca 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTest.php
@@ -22,6 +22,7 @@
  *   controllers = {
  *     "storage" = "Drupal\entity_test\EntityTestStorageController",
  *     "list" = "Drupal\entity_test\EntityTestListController",
+ *     "view_builder" = "Drupal\entity_test\EntityTestViewBuilder"
  *     "access" = "Drupal\entity_test\EntityTestAccessController",
  *     "form" = {
  *       "default" = "Drupal\entity_test\EntityTestFormController"
@@ -36,7 +37,11 @@
  *     "uuid" = "uuid",
  *     "bundle" = "type",
  *   },
- *   menu_base_path = "entity-test/manage/%entity_test"
+ *   menu_base_path = "entity-test/manage/%entity_test",
+ *   links = {
+ *     "canonical" = "/entity_test/{entity_test_render}",
+ *     "edit-form" = "/entity_test/manage/{entity_test_render}/edit"
+ *   }
  * )
  */
 class EntityTest extends EntityNG {
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestLabel.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestLabel.php
index fc969c3..da3a31c 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestLabel.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/Entity/EntityTestLabel.php
@@ -19,7 +19,7 @@
  *   module = "entity_test",
  *   controllers = {
  *     "storage" = "Drupal\entity_test\EntityTestStorageController",
- *     "render" = "Drupal\entity_test\EntityTestRenderController"
+ *     "view_builder" = "Drupal\entity_test\EntityTestViewBuilder"
  *   },
  *   base_table = "entity_test",
  *   render_cache = FALSE,
diff --git a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestRenderController.php b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestViewBuilder.php
similarity index 67%
rename from core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestRenderController.php
rename to core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestViewBuilder.php
index 0c56533..6805765 100644
--- a/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestRenderController.php
+++ b/core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestViewBuilder.php
@@ -2,22 +2,22 @@
 
 /**
  * @file
- * Contains \Drupal\entity_test\EntityTestRenderController.
+ * Contains \Drupal\entity_test\EntityTestViewBuilder.
  */
 
 namespace Drupal\entity_test;
 
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilder;
 
 /**
- * Defines an entity render controller for a test entity.
+ * Defines an entity view builder for a test entity.
  *
  * @see \Drupal\entity_test\Entity\EntityTestRender
  */
-class EntityTestRenderController extends EntityRenderController {
+class EntityTestViewBuilder extends EntityViewBuilder {
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::buildContent().
+   * {@inheritdoc}
    */
   public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) {
     parent::buildContent($entities, $displays, $view_mode, $langcode);
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
index 03ddfe2..578abcd 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Entity/Term.php
@@ -24,7 +24,7 @@
  *   module = "taxonomy",
  *   controllers = {
  *     "storage" = "Drupal\taxonomy\TermStorageController",
- *     "render" = "Drupal\taxonomy\TermRenderController",
+ *     "view_builder" = "Drupal\taxonomy\TermViewBuilder",
  *     "access" = "Drupal\taxonomy\TermAccessController",
  *     "form" = {
  *       "default" = "Drupal\taxonomy\TermFormController",
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/TermRenderController.php b/core/modules/taxonomy/lib/Drupal/taxonomy/TermViewBuilder.php
similarity index 80%
rename from core/modules/taxonomy/lib/Drupal/taxonomy/TermRenderController.php
rename to core/modules/taxonomy/lib/Drupal/taxonomy/TermViewBuilder.php
index cf319d0..6e91524 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/TermRenderController.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/TermViewBuilder.php
@@ -2,22 +2,22 @@
 
 /**
  * @file
- * Definition of Drupal\taxonomy\TermRenderController.
+ * Definition of Drupal\taxonomy\TermViewBuilder.
  */
 
 namespace Drupal\taxonomy;
 
 use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilder;
 use Drupal\entity\Entity\EntityDisplay;
 
 /**
  * Render controller for taxonomy terms.
  */
-class TermRenderController extends EntityRenderController {
+class TermViewBuilder extends EntityViewBuilder {
 
   /**
-   * Overrides Drupal\Core\Entity\EntityRenderController::buildContent().
+   * {@inheritdoc}
    */
   public function buildContent(array $entities, array $displays, $view_mode, $langcode = NULL) {
     parent::buildContent($entities, $displays, $view_mode, $langcode);
@@ -36,7 +36,7 @@ public function buildContent(array $entities, array $displays, $view_mode, $lang
   }
 
   /**
-   * Overrides \Drupal\Core\Entity\EntityRenderController::getBuildDefaults().
+   * {@inheritdoc}
    */
   protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langcode) {
     $return = parent::getBuildDefaults($entity, $view_mode, $langcode);
@@ -49,7 +49,7 @@ protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langco
   }
 
   /**
-   * Overrides \Drupal\Core\Entity\EntityRenderController::alterBuild().
+   * {@inheritdoc}
    */
   protected function alterBuild(array &$build, EntityInterface $entity, EntityDisplay $display, $view_mode, $langcode = NULL) {
     parent::alterBuild($build, $entity, $display, $view_mode, $langcode);
diff --git a/core/modules/tour/lib/Drupal/tour/Entity/Tour.php b/core/modules/tour/lib/Drupal/tour/Entity/Tour.php
index eaa58f8..f686d6d 100644
--- a/core/modules/tour/lib/Drupal/tour/Entity/Tour.php
+++ b/core/modules/tour/lib/Drupal/tour/Entity/Tour.php
@@ -22,7 +22,7 @@
  *   module = "tour",
  *   controllers = {
  *     "storage" = "Drupal\Core\Config\Entity\ConfigStorageController",
- *     "render" = "Drupal\tour\TourRenderController"
+ *     "view_builder" = "Drupal\tour\TourViewBuilder"
  *   },
  *   config_prefix = "tour.tour",
  *   entity_keys = {
diff --git a/core/modules/tour/lib/Drupal/tour/TourRenderController.php b/core/modules/tour/lib/Drupal/tour/TourViewBuilder.php
similarity index 88%
rename from core/modules/tour/lib/Drupal/tour/TourRenderController.php
rename to core/modules/tour/lib/Drupal/tour/TourViewBuilder.php
index aea0d33..9d09cfd 100644
--- a/core/modules/tour/lib/Drupal/tour/TourRenderController.php
+++ b/core/modules/tour/lib/Drupal/tour/TourViewBuilder.php
@@ -2,21 +2,21 @@
 
 /**
  * @file
- * Contains \Drupal\tour\TourRenderController.
+ * Contains \Drupal\tour\TourViewBuilder.
  */
 
 namespace Drupal\tour;
 
-use Drupal\Core\Entity\EntityRenderController;
+use Drupal\Core\Entity\EntityViewBuilder;
 use Drupal\Core\Entity\EntityInterface;
 
 /**
- * Provides a Tour render controller.
+ * Provides a Tour view builder.
  */
-class TourRenderController extends EntityRenderController {
+class TourViewBuilder extends EntityViewBuilder {
 
   /**
-   * Overrides \Drupal\Core\Entity\EntityRenderController::viewMultiple().
+   * {@inheritdoc}
    */
   public function viewMultiple(array $entities = array(), $view_mode = 'full', $langcode = NULL) {
     $build = array();
diff --git a/core/modules/user/lib/Drupal/user/Entity/User.php b/core/modules/user/lib/Drupal/user/Entity/User.php
index d975177..e9c724d 100644
--- a/core/modules/user/lib/Drupal/user/Entity/User.php
+++ b/core/modules/user/lib/Drupal/user/Entity/User.php
@@ -22,7 +22,7 @@
  *   controllers = {
  *     "storage" = "Drupal\user\UserStorageController",
  *     "access" = "Drupal\user\UserAccessController",
- *     "render" = "Drupal\Core\Entity\EntityRenderController",
+ *     "view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
  *     "form" = {
  *       "default" = "Drupal\user\ProfileFormController",
  *       "cancel" = "Drupal\user\Form\UserCancelForm",
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index 24aee74..4c52ba4 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -169,7 +169,7 @@ function user_label($entity_type, $entity) {
 /**
  * Populates $entity->account for each prepared entity.
  *
- * Called by Drupal\Core\Entity\EntityRenderControllerInterface::buildContent()
+ * Called by Drupal\Core\Entity\EntityViewBuilderInterface::buildContent()
  * implementations.
  *
  * @param array $entities
@@ -1824,7 +1824,7 @@ function user_form_process_password_confirm($element) {
  * Implements hook_node_load().
  *
  * @todo Deprecated by $node->author, attached in
- *   \Drupal\node\NodeRenderController::buildContent(). Update code that
+ *   \Drupal\node\NodeViewBuilder::buildContent(). Update code that
  *   depends on these properties.
  */
 function user_node_load($nodes, $types) {
diff --git a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaEntityTest.php b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaEntityTest.php
index af0050e..3f17087 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Handler/AreaEntityTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Handler/AreaEntityTest.php
@@ -81,8 +81,8 @@ public function testEntityArea() {
     $entities = array();
     for ($i = 0; $i < 2; $i++) {
       $random_label = $this->randomName();
-      $data = array('bundle' => 'entity_test_render', 'name' => $random_label);
-      $entity_test = $this->container->get('entity.manager')->getStorageController('entity_test_render')->create($data);
+      $data = array('bundle' => 'entity_test', 'name' => $random_label);
+      $entity_test = $this->container->get('entity.manager')->getStorageController('entity_test')->create($data);
       $entity_test->save();
       $entities[] = $entity_test;
     }
@@ -101,9 +101,9 @@ public function testEntityArea() {
 
     // Change the view mode of the area handler.
     $view = views_get_view('test_entity_area');
-    $item = $view->getItem('default', 'header', 'entity_entity_test_render');
+    $item = $view->getItem('default', 'header', 'entity_entity_test');
     $item['view_mode'] = 'test';
-    $view->setItem('default', 'header', 'entity_entity_test_render', $item);
+    $view->setItem('default', 'header', 'entity_entity_test', $item);
 
     $preview = $view->preview('default', array($entities[1]->id()));
     $this->drupalSetContent(drupal_render($preview));
diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_area.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_area.yml
index bb30663..5d06868 100644
--- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_area.yml
+++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_entity_area.yml
@@ -11,18 +11,18 @@ display:
         pager_options: '0'
         sorts: '0'
       header:
-        entity_entity_test_render:
-          field: entity_entity_test_render
-          id: entity_entity_test_render
+        entity_entity_test:
+          field: entity_entity_test
+          id: entity_entity_test
           table: views
           entity_id: 1
           view_mode: full
           plugin_id: entity
           provider: views
       footer:
-        entity_entity_test_render:
-          field: entity_entity_test_render
-          id: entity_entity_test_render
+        entity_entity_test:
+          field: entity_entity_test
+          id: entity_entity_test
           table: views
           entity_id: '!1'
           view_mode: full
diff --git a/core/tests/Drupal/Tests/Core/Entity/Controller/EntityViewControllerTest.php b/core/tests/Drupal/Tests/Core/Entity/Controller/EntityViewControllerTest.php
index 943a1d5..e727ad8 100644
--- a/core/tests/Drupal/Tests/Core/Entity/Controller/EntityViewControllerTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/Controller/EntityViewControllerTest.php
@@ -32,8 +32,8 @@ public static function getInfo() {
    */
   public function testView() {
 
-    // Mock a render controller.
-    $render_controller = $this->getMockBuilder('Drupal\entity_test\EntityTestRenderController')
+    // Mock a view builder.
+    $render_controller = $this->getMockBuilder('Drupal\entity_test\EntityTestViewBuilder')
       ->disableOriginalConstructor()
       ->getMock();
     $render_controller->expects($this->any())
@@ -45,10 +45,10 @@ public function testView() {
       ->disableOriginalConstructor()
       ->getMock();
     $entity_manager->expects($this->any())
-      ->method('getRenderController')
+      ->method('getViewBuilder')
       ->will($this->returnValue($render_controller));
 
-    // Mock an 'entity_test_render' entity.
+    // Mock an 'entity_test' entity.
     $entity = $this->getMockBuilder('Drupal\entity_test\Entity\EntityTestRender')
       ->disableOriginalConstructor()
       ->getMock();
