diff --git a/composer.json b/composer.json
index 8d5cd3a..b2740c4 100644
--- a/composer.json
+++ b/composer.json
@@ -5,18 +5,40 @@
   "license": "GPL-2.0+",
   "require": {
     "composer/installers": "^1.0.21",
+    "wikimedia/composer-merge-plugin": "^1.3.0"
+  },
+  "replace": {
     "drupal/core": "~8.0"
   },
   "minimum-stability": "dev",
   "prefer-stable": true,
   "config": {
-    "preferred-install": "dist",
-    "autoloader-suffix": "Drupal8"
+    "preferred-install": "dist"
   },
   "extra": {
     "_readme": [
-      "By default Drupal loads the autoloader from ./core/vendor/autoload.php.",
+      "By default Drupal loads the autoloader from ./vendor/autoload.php.",
       "To change the autoloader you can edit ./autoload.php."
+    ],
+    "merge-plugin": {
+      "include": [
+        "core/composer.json"
+      ],
+      "recurse": false,
+      "replace": false,
+      "merge-extra": false
+    }
+  },
+  "autoload": {
+    "psr-4": {
+      "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
+    }
+  },
+  "scripts": {
+    "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
+    "post-autoload-dump": [
+      "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
+      "Drupal\\Core\\Composer\\Composer::dumpDeploymentIdentifier"
     ]
   }
 }
diff --git a/core/lib/Drupal/Core/Composer/Composer.php b/core/lib/Drupal/Core/Composer/Composer.php
index 12164c3..6fa51fe 100644
--- a/core/lib/Drupal/Core/Composer/Composer.php
+++ b/core/lib/Drupal/Core/Composer/Composer.php
@@ -21,18 +21,20 @@ class Composer {
    * Add vendor classes to composers static classmap.
    */
   public static function preAutoloadDump(Event $event) {
+    $vendor_dir = $event->getComposer()->getConfig()->raw()['config']['vendor-dir'];
     $composer = $event->getComposer();
     $package = $composer->getPackage();
     $autoload = $package->getAutoload();
     $autoload['classmap'] = array_merge($autoload['classmap'], array(
-      'vendor/symfony/http-foundation/Request.php',
-      'vendor/symfony/http-foundation/ParameterBag.php',
-      'vendor/symfony/http-foundation/FileBag.php',
-      'vendor/symfony/http-foundation/ServerBag.php',
-      'vendor/symfony/http-foundation/HeaderBag.php',
-      'vendor/symfony/http-kernel/HttpKernel.php',
-      'vendor/symfony/http-kernel/HttpKernelInterface.php',
-      'vendor/symfony/http-kernel/TerminableInterface.php',
+      $vendor_dir . '/symfony/http-foundation/Request.php',
+      $vendor_dir . '/symfony/http-foundation/ParameterBag.php',
+      $vendor_dir . '/symfony/http-foundation/FileBag.php',
+      $vendor_dir . '/symfony/http-foundation/ServerBag.php',
+      $vendor_dir . '/symfony/http-foundation/HeaderBag.php',
+      $vendor_dir . '/symfony/http-kernel/HttpKernel.php',
+      $vendor_dir . '/symfony/http-kernel/HttpKernelInterface.php',
+      $vendor_dir . '/symfony/http-kernel/TerminableInterface.php',
+      $vendor_dir . '/DeploymentIdentifier.php'
     ));
     $package->setAutoload($autoload);
   }
@@ -70,4 +72,37 @@ public static function ensureHtaccess(Event $event) {
     }
   }
 
+  /**
+   * Generates the DeploymentIdentifier class.
+   *
+   * @param \Composer\Script\Event $event
+   */
+  public static function dumpDeploymentIdentifier(Event $event) {
+    $vendor_dir = $event->getComposer()->getConfig()->get('vendor-dir');
+    $hash = $event->getComposer()->getLocker()->getLockData()['hash'];
+
+    $lines = <<<EOT
+<?php
+
+namespace Drupal\Core\Composer;
+
+/**
+ * Provides the deployment identifier created by Composer.
+ *
+ * @see
+ */
+class DeploymentIdentifier implements DeploymentIdentifierInterface {
+
+  /**
+   * @return string
+   */
+  public function getIdentifier() {
+    return '$hash';
+  }
+
+}
+EOT;
+    file_put_contents($vendor_dir . '/DeploymentIdentifier.php', $lines . "\n");
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Composer/DeploymentIdentifierInterface.php b/core/lib/Drupal/Core/Composer/DeploymentIdentifierInterface.php
new file mode 100644
index 0000000..22a7f82
--- /dev/null
+++ b/core/lib/Drupal/Core/Composer/DeploymentIdentifierInterface.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Composer\DeploymentIdentifierInterface.
+ */
+
+namespace Drupal\Core\Composer;
+
+/**
+ * Interface DeploymentIdentifierInterface
+ *
+ * @package Drupal\Core\Composer
+ */
+interface DeploymentIdentifierInterface {
+
+  /**
+   * Returns the deployment identifier.
+   *
+   * @return string
+   */
+  public function getIdentifier();
+
+}
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index 2ddc3ee..dcb40c1 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -11,6 +11,7 @@
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Component\Utility\UrlHelper;
+use Drupal\Core\Composer\DeploymentIdentifier;
 use Drupal\Core\Config\BootstrapConfigStorageFactory;
 use Drupal\Core\Config\NullStorage;
 use Drupal\Core\Database\Database;
@@ -976,7 +977,8 @@ protected function initializeSettings(Request $request) {
         && Settings::get('class_loader_auto_detect', TRUE)
         && function_exists('apc_fetch')) {
       $prefix = Settings::getApcuPrefix('class_loader', $this->root);
-      $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $this->classLoader);
+      $identifier = new DeploymentIdentifier();
+      $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix . $identifier->getIdentifier(), $this->classLoader);
       $this->classLoader->unregister();
       $apc_loader->register();
       $this->classLoader = $apc_loader;
diff --git a/vendor/DeploymentIdentifier.php b/vendor/DeploymentIdentifier.php
new file mode 100644
index 0000000..1d9f917
--- /dev/null
+++ b/vendor/DeploymentIdentifier.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Drupal\Core\Composer;
+
+/**
+ * Provides the deployment identifier created by Composer.
+ *
+ * @see
+ */
+class DeploymentIdentifier implements DeploymentIdentifierInterface {
+
+  /**
+   * @return string
+   */
+  public function getIdentifier() {
+    return '6b4b22cb9e73d33e9c1edcced66a68cd';
+  }
+
+}
