diff --git a/core/lib/Drupal/Core/Controller/ControllerBase.php b/core/lib/Drupal/Core/Controller/ControllerBase.php
index d0718ff..965610e 100644
--- a/core/lib/Drupal/Core/Controller/ControllerBase.php
+++ b/core/lib/Drupal/Core/Controller/ControllerBase.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\Core\Controller;
 
-use Symfony\Component\DependencyInjection\ContainerAware;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 
 /**
@@ -29,7 +28,7 @@
  *
  * @see \Drupal\Core\Controller\ControllerInterface
  */
-abstract class ControllerBase extends ContainerAware {
+abstract class ControllerBase {
 
   /**
    * Retrieves the entity manager service.
@@ -38,7 +37,10 @@
    *   The entity manager service.
    */
   protected function entityManager() {
-    return $this->container->get('plugin.manager.entity');
+    if (!$this->entityManager) {
+      $this->entityManager = $this->container->get('plugin.manager.entity');
+    }
+    return $this->entityManager;
   }
 
   /**
@@ -52,7 +54,7 @@ protected function entityManager() {
    *   The cache object associated with the specified bin.
    */
   protected function cache($bin = 'cache') {
-    return $this->container->get('cache.' . $bin);
+    return $this->container()->get('cache.' . $bin);
   }
 
   /**
@@ -72,7 +74,10 @@ protected function cache($bin = 'cache') {
    *   A configuration object.
    */
   protected function config($name) {
-    return $this->container->get('config.factory')->get($name);
+    if (!$this->configFactory) {
+      $this->configFactory = $this->container()->get('config.factory')->get($name);
+    }
+    return $this->configFactory;
   }
 
   /**
@@ -84,7 +89,10 @@ protected function config($name) {
    * @return \Drupal\Core\KeyValueStore\KeyValueStoreInterface
    */
   protected function keyValue($collection) {
-    return $this->container->get('keyvalue')->get($collection);
+    if (!$this->kv) {
+      $this->kv = $this->container()->get('keyvalue')->get($collection);
+    }
+    return $this->kv;
   }
 
   /**
@@ -99,7 +107,10 @@ protected function keyValue($collection) {
    * @return \Drupal\Core\KeyValueStore\KeyValueStoreInterface
    */
   protected function state() {
-    return $this->container->get('state');
+    if (!$this->stateService) {
+      $this->stateService = $this->container()->get('state');
+    }
+    return $this->stateService;
   }
 
   /**
@@ -108,7 +119,10 @@ protected function state() {
    * @return \Drupal\Core\Extension\ModuleHandlerInterface
    */
   protected function moduleHandler() {
-    return $this->container->get('module_handler');
+    if (!$this->moduleHandler) {
+      $this->moduleHandler = $this->container()->get('module_handler');
+    }
+    return $this->moduleHandler;
   }
 
   /**
@@ -118,7 +132,10 @@ protected function moduleHandler() {
    *   The url generator service.
    */
   protected function urlGenerator() {
-    return $this->container->get('url_generator');
+    if (!$this->urlGenerator) {
+      $this->urlGenerator = $this->container()->get('url_generator');
+    }
+    return $this->urlGenerator;
   }
 
   /**
@@ -128,7 +145,10 @@ protected function urlGenerator() {
    *   The current user.
    */
   protected function currentUser() {
-    return $this->container->get('current_user');
+    if (!$this->currentUser) {
+      $this->currentUser = $this->container()->get('current_user');
+    }
+    return $this->currentUser;
   }
 
   /**
@@ -151,7 +171,20 @@ protected function currentUser() {
    *   The translated string.
    */
   protected function t($string, array $args = array(), array $options = array()) {
-    return $this->container->get('string_translation')->translate($string, $args, $options);
+    return $this->getTranslationManager()->translate($string, $args, $options);
+  }
+
+  /**
+   * Returns the translation manager.
+   *
+   * @return \Drupal\Core\StringTranslation\TranslationInterface
+   *   The translation manager.
+   */
+  protected function translationManager() {
+    if (!$this->translationManager) {
+      $this->translationManager = $this->container()->get('string_translation');
+    }
+    return $this->translationManager;
   }
 
   /**
@@ -161,7 +194,23 @@ protected function t($string, array $args = array(), array $options = array()) {
    *   The language manager.
    */
   protected function languageManager() {
-    return $this->container->get('language_manager');
+    if (!$this->languageManager) {
+      $this->languageManager = $this->container()->get('language_manager');
+    }
+    return $this->languageManager;
+  }
+
+  /**
+   * Returns the service container.
+   *
+   * @return \Symfony\Component\DependencyInjection\ContainerInterface $container
+   *   The service container.
+   */
+  protected function container() {
+    if (!$this->container) {
+      $this->container = \Drupal::getContainer();
+    }
+    return $this->container;
   }
 
   /**
@@ -177,7 +226,7 @@ protected function languageManager() {
    *   A redirect response object that may be returned by the controller.
    */
   public function redirect($route_name, array $parameters = array(), $status = 302) {
-    $url = $this->container->get('url_generator')->generate($route_name, $parameters, TRUE);
+    $url = $this->urlGenerator()->generate($route_name, $parameters, TRUE);
     return new RedirectResponse($url, $status);
   }
 }
