diff --git a/composer.json b/composer.json
index 4c0f43c..8f68f6c 100644
--- a/composer.json
+++ b/composer.json
@@ -1,48 +1,24 @@
 {
   "name": "drupal/drupal",
   "description": "Drupal is an open source content management platform powering millions of websites and applications.",
-  "type": "drupal-core",
+  "type": "project",
   "license": "GPL-2.0+",
   "require": {
-    "php": ">=5.4.5",
-    "sdboyer/gliph": "0.1.*",
-    "symfony/class-loader": "2.6.*",
-    "symfony/css-selector": "2.6.*",
-    "symfony/debug": "2.6.*",
-    "symfony/dependency-injection": "2.6.*",
-    "symfony/event-dispatcher": "2.6.*",
-    "symfony/http-foundation": "2.6.*",
-    "symfony/http-kernel": "2.6.*",
-    "symfony/routing": "2.6.*",
-    "symfony/serializer": "2.6.*",
-    "symfony/validator": "2.6.*",
-    "symfony/yaml": "2.6.*",
-    "twig/twig": "1.16.*",
-    "doctrine/common": "dev-master#a45d110f71c323e29f41eb0696fa230e3fa1b1b5",
-    "doctrine/annotations": "1.2.*",
-    "guzzlehttp/guzzle": "~5.0",
-    "symfony-cmf/routing": "1.3.*",
-    "easyrdf/easyrdf": "0.8.*",
-    "phpunit/phpunit": "4.1.*",
-    "phpunit/phpunit-mock-objects": "dev-master#e60bb929c50ae4237aaf680a4f6773f4ee17f0a2",
-    "zendframework/zend-feed": "2.2.*",
-    "mikey179/vfsStream": "1.*",
-    "stack/builder": "1.0.*",
-    "egulias/email-validator": "1.2.*"
-  },
-  "autoload": {
-    "psr-4": {
-      "Drupal\\Core\\": "core/lib/Drupal/Core",
-      "Drupal\\Component\\": "core/lib/Drupal/Component",
-      "Drupal\\Driver\\": "drivers/lib/Drupal/Driver"
-    },
-    "files": [
-      "core/lib/Drupal.php"
-    ]
+    "drupal/core": "~8.0"
   },
+  "minimum-stability": "dev",
+  "prefer-stable": true,
+  "repositories": [],
   "config": {
-    "vendor-dir": "core/vendor",
     "preferred-install": "dist",
     "autoloader-suffix": "Drupal8"
+  },
+  "extra": {
+    "_readme": [
+      "This is an example file to show how a Drupal website can be managed via",
+      "Composer. It does not work out of the box but requires a Git subtree",
+      "split of the core directory to be added to the repositories",
+      "section above."
+    ]
   }
 }
diff --git a/core/composer.json b/core/composer.json
new file mode 100644
index 0000000..e21285c
--- /dev/null
+++ b/core/composer.json
@@ -0,0 +1,47 @@
+{
+  "name": "drupal/core",
+  "description": "Drupal is an open source content management platform powering millions of websites and applications.",
+  "type": "drupal-core",
+  "license": "GPL-2.0+",
+  "require": {
+    "php": ">=5.4.5",
+    "sdboyer/gliph": "0.1.*",
+    "symfony/class-loader": "2.6.*",
+    "symfony/css-selector": "2.6.*",
+    "symfony/debug": "2.6.*",
+    "symfony/dependency-injection": "2.6.*",
+    "symfony/event-dispatcher": "2.6.*",
+    "symfony/http-foundation": "2.6.*",
+    "symfony/http-kernel": "2.6.*",
+    "symfony/routing": "2.6.*",
+    "symfony/serializer": "2.6.*",
+    "symfony/validator": "2.6.*",
+    "symfony/yaml": "2.6.*",
+    "twig/twig": "1.16.*",
+    "doctrine/common": "dev-master#a45d110f71c323e29f41eb0696fa230e3fa1b1b5",
+    "doctrine/annotations": "1.2.*",
+    "guzzlehttp/guzzle": "~5.0",
+    "symfony-cmf/routing": "1.3.*",
+    "easyrdf/easyrdf": "0.8.*",
+    "phpunit/phpunit": "4.1.*",
+    "phpunit/phpunit-mock-objects": "dev-master#e60bb929c50ae4237aaf680a4f6773f4ee17f0a2",
+    "zendframework/zend-feed": "2.2.*",
+    "mikey179/vfsStream": "1.*",
+    "stack/builder": "1.0.*",
+    "egulias/email-validator": "1.2.*"
+  },
+  "autoload": {
+    "psr-4": {
+      "Drupal\\Core\\": "lib/Drupal/Core",
+      "Drupal\\Component\\": "lib/Drupal/Component",
+      "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver"
+    },
+    "files": [
+      "lib/Drupal.php"
+    ]
+  },
+  "config": {
+    "preferred-install": "dist",
+    "autoloader-suffix": "Drupal8"
+  }
+}
diff --git a/composer.lock b/core/composer.lock
similarity index 100%
rename from composer.lock
rename to core/composer.lock
diff --git a/core/vendor/composer/autoload_classmap.php b/core/vendor/composer/autoload_classmap.php
index 670145c..9f66986 100644
--- a/core/vendor/composer/autoload_classmap.php
+++ b/core/vendor/composer/autoload_classmap.php
@@ -3,7 +3,7 @@
 // autoload_classmap.php @generated by Composer
 
 $vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname(dirname($vendorDir));
+$baseDir = dirname($vendorDir);
 
 return array(
     'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/File/Iterator.php',
diff --git a/core/vendor/composer/autoload_files.php b/core/vendor/composer/autoload_files.php
index de3bf98..c85d22c 100644
--- a/core/vendor/composer/autoload_files.php
+++ b/core/vendor/composer/autoload_files.php
@@ -3,9 +3,9 @@
 // autoload_files.php @generated by Composer
 
 $vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname(dirname($vendorDir));
+$baseDir = dirname($vendorDir);
 
 return array(
     $vendorDir . '/react/promise/src/functions.php',
-    $baseDir . '/core/lib/Drupal.php',
+    $baseDir . '/lib/Drupal.php',
 );
diff --git a/core/vendor/composer/autoload_namespaces.php b/core/vendor/composer/autoload_namespaces.php
index 18472d7..3cd8c33 100644
--- a/core/vendor/composer/autoload_namespaces.php
+++ b/core/vendor/composer/autoload_namespaces.php
@@ -3,7 +3,7 @@
 // autoload_namespaces.php @generated by Composer
 
 $vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname(dirname($vendorDir));
+$baseDir = dirname($vendorDir);
 
 return array(
     'org\\bovigo\\vfs\\' => array($vendorDir . '/mikey179/vfsStream/src/main/php'),
diff --git a/core/vendor/composer/autoload_psr4.php b/core/vendor/composer/autoload_psr4.php
index 1b053f1..8b6150b 100644
--- a/core/vendor/composer/autoload_psr4.php
+++ b/core/vendor/composer/autoload_psr4.php
@@ -3,7 +3,7 @@
 // autoload_psr4.php @generated by Composer
 
 $vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname(dirname($vendorDir));
+$baseDir = dirname($vendorDir);
 
 return array(
     'Symfony\\Cmf\\Component\\Routing\\' => array($vendorDir . '/symfony-cmf/routing'),
@@ -11,7 +11,7 @@
     'GuzzleHttp\\Stream\\' => array($vendorDir . '/guzzlehttp/streams/src'),
     'GuzzleHttp\\Ring\\' => array($vendorDir . '/guzzlehttp/ringphp/src'),
     'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
-    'Drupal\\Driver\\' => array($baseDir . '/drivers/lib/Drupal/Driver'),
-    'Drupal\\Core\\' => array($baseDir . '/core/lib/Drupal/Core'),
-    'Drupal\\Component\\' => array($baseDir . '/core/lib/Drupal/Component'),
+    'Drupal\\Driver\\' => array($baseDir . '/../drivers/lib/Drupal/Driver'),
+    'Drupal\\Core\\' => array($baseDir . '/lib/Drupal/Core'),
+    'Drupal\\Component\\' => array($baseDir . '/lib/Drupal/Component'),
 );
diff --git a/core/vendor/composer/include_paths.php b/core/vendor/composer/include_paths.php
index b43900a..b3ec291 100644
--- a/core/vendor/composer/include_paths.php
+++ b/core/vendor/composer/include_paths.php
@@ -3,7 +3,7 @@
 // include_paths.php @generated by Composer
 
 $vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname(dirname($vendorDir));
+$baseDir = dirname($vendorDir);
 
 return array(
     $vendorDir . '/phpunit/php-text-template',
diff --git a/example.gitignore b/example.gitignore
index e6c2213..e2f0124 100644
--- a/example.gitignore
+++ b/example.gitignore
@@ -7,6 +7,10 @@
 # Because .gitignore can be specific to your site, this file has a different
 # name; updating Drupal core will not override your custom .gitignore file.
 
+# Ignore core and vendor when managing dependencies with Composer.
+# core
+# vendor
+
 # Ignore configuration files that may contain sensitive information.
 sites/*/settings*.php
 sites/*/services*.yml
