diff --git a/core/composer.json b/core/composer.json
index 64928b1..a0b5b3d 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -9,5 +9,11 @@
     "symfony/yaml": "2.1.*",
     "twig/twig": "1.8.*"
   },
-  "minimum-stability": "beta"
+  "minimum-stability": "beta",
+  "autoload": {
+    "psr-0": {
+      "Drupal\\Component": "lib",
+      "Drupal\\Core": "lib"
+    }
+  }
 }
diff --git a/core/composer.lock b/core/composer.lock
index c861d34..e54413f 100644
--- a/core/composer.lock
+++ b/core/composer.lock
@@ -1,5 +1,5 @@
 {
-    "hash": "ec77094fc475b57afb7a27f63983ead1",
+    "hash": "37887e2fad9c9805d2a90d6ee64ed216",
     "packages": [
         {
             "package": "symfony/class-loader",
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index f3aeab4..ddb3986 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -1,8 +1,6 @@
 <?php
 
 use Drupal\Core\Database\Database;
-use Symfony\Component\ClassLoader\UniversalClassLoader;
-use Symfony\Component\ClassLoader\ApcUniversalClassLoader;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Symfony\Component\HttpFoundation\Request;
 use Drupal\Core\Language\Language;
@@ -2980,68 +2978,17 @@ function ip_address() {
  *
  * The class loader is responsible for lazy-loading all PSR-0 compatible
  * classes, interfaces, and traits (PHP 5.4 and later). Its only dependencies
- * are DRUPAL_ROOT and variable_get(). Otherwise it may be called as early as
- * possible.
+ * are DRUPAL_ROOT. Otherwise it may be called as early as possible.
  *
- * @return Symfony\Component\ClassLoader\UniversalClassLoader
- *   A UniversalClassLoader class instance (or extension thereof).
+ * @return Composer\Autoload\ClassLoader
+ *   A ClassLoader class instance.
  */
 function drupal_classloader() {
-  // By default, use the UniversalClassLoader which is best for development,
-  // as it does not break when code is moved on the file system. However, as it
-  // is slow, allow to use the APC class loader in production.
   static $loader;
 
   if (!isset($loader)) {
-    // Include the Symfony ClassLoader for loading PSR-0-compatible classes.
-    require_once DRUPAL_ROOT . '/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php';
-
-    // @todo Use a cleaner way than variable_get() to switch autoloaders.
-    switch (variable_get('autoloader_mode', 'default')) {
-      case 'apc':
-        if (function_exists('apc_store')) {
-          require_once DRUPAL_ROOT . '/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php';
-          $loader = new ApcUniversalClassLoader('drupal.' . $GLOBALS['drupal_hash_salt']);
-          break;
-        }
-      // Fall through to the default loader if APC was not loaded, so that the
-      // site does not fail completely.
-      case 'dev':
-      case 'default':
-      default:
-        $loader = new UniversalClassLoader();
-        break;
-    }
-
-    // Register explicit PSR-0 vendor namespaces.
-    $loader->registerNamespaces(array(
-      // All Symfony-borrowed code lives in /core/vendor/symfony.
-      'Symfony\Component\ClassLoader' => DRUPAL_ROOT . '/core/vendor/symfony/class-loader',
-      'Symfony\Component\DependencyInjection' => DRUPAL_ROOT . '/core/vendor/symfony/dependency-injection',
-      'Symfony\Component\EventDispatcher' => DRUPAL_ROOT . '/core/vendor/symfony/event-dispatcher',
-      'Symfony\Component\HttpFoundation' => DRUPAL_ROOT . '/core/vendor/symfony/http-foundation',
-      'Symfony\Component\HttpKernel' => DRUPAL_ROOT . '/core/vendor/symfony/http-kernel',
-      'Symfony\Component\Routing' => DRUPAL_ROOT . '/core/vendor/symfony/routing',
-      'Symfony\Component\Yaml' => DRUPAL_ROOT . '/core/vendor/symfony/yaml',
-    ));
-    // Register PEAR-style vendor namespaces.
-    $loader->registerPrefixes(array(
-      // All Twig-borrowed code lives in /core/vendor/twig.
-      'Twig' => DRUPAL_ROOT . '/core/vendor/twig/twig/lib',
-    ));
-    // Register the Drupal namespace for classes in core as a fallback.
-    // This allows to register additional namespaces within the Drupal namespace
-    // (e.g., for modules) and avoids an additional file_exists() on the Drupal
-    // core namespace, since the class loader can already determine the best
-    // namespace match based on a string comparison. It further allows modules
-    // to register/overload namespaces in Drupal core.
-    $loader->registerNamespaceFallbacks(array(
-      // All Drupal-namespaced code in core lives in /core/lib/Drupal.
-      'Drupal' => DRUPAL_ROOT . '/core/lib',
-    ));
-
-    // Register the loader with PHP.
-    $loader->register();
+    // Use Composer to register all the PSR-0 namespaces.
+    $loader = require DRUPAL_ROOT . '/core/vendor/autoload.php';
   }
   return $loader;
 }
@@ -3056,7 +3003,7 @@ function drupal_classloader() {
  */
 function drupal_classloader_register($name, $path) {
   $loader = drupal_classloader();
-  $loader->registerNamespace('Drupal\\' . $name, DRUPAL_ROOT . '/' . $path . '/lib');
+  $loader->add('Drupal\\' . $name, DRUPAL_ROOT . '/' . $path . '/lib');
 }
 
 /**
diff --git a/core/vendor/composer/ClassLoader.php b/core/vendor/composer/ClassLoader.php
index 146276e..d1c2cd5 100644
--- a/core/vendor/composer/ClassLoader.php
+++ b/core/vendor/composer/ClassLoader.php
@@ -102,7 +102,7 @@ class ClassLoader
     /**
      * Turns on searching the include path for class files.
      *
-     * @param Boolean $useIncludePath
+     * @param bool $useIncludePath
      */
     public function setUseIncludePath($useIncludePath)
     {
@@ -113,7 +113,7 @@ class ClassLoader
      * Can be used to check if the autoloader uses the include path to check
      * for classes.
      *
-     * @return Boolean
+     * @return bool
      */
     public function getUseIncludePath()
     {
@@ -123,7 +123,7 @@ class ClassLoader
     /**
      * Registers this instance as an autoloader.
      *
-     * @param Boolean $prepend Whether to prepend the autoloader or not
+     * @param bool $prepend Whether to prepend the autoloader or not
      */
     public function register($prepend = false)
     {
@@ -141,13 +141,13 @@ class ClassLoader
     /**
      * Loads the given class or interface.
      *
-     * @param  string       $class The name of the class
-     * @return Boolean|null True, if loaded
+     * @param  string    $class The name of the class
+     * @return bool|null True, if loaded
      */
     public function loadClass($class)
     {
         if ($file = $this->findFile($class)) {
-            require $file;
+            include $file;
 
             return true;
         }
diff --git a/core/vendor/composer/autoload_namespaces.php b/core/vendor/composer/autoload_namespaces.php
index 6ae0e91..922baa5 100644
--- a/core/vendor/composer/autoload_namespaces.php
+++ b/core/vendor/composer/autoload_namespaces.php
@@ -14,4 +14,6 @@ return array(
     'Symfony\\Component\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/',
     'Symfony\\Component\\DependencyInjection' => $vendorDir . '/symfony/dependency-injection/',
     'Symfony\\Component\\ClassLoader' => $vendorDir . '/symfony/class-loader/',
+    'Drupal\\Core' => $baseDir . '/lib',
+    'Drupal\\Component' => $baseDir . '/lib',
 );
