diff --git a/composer_manager.info.yml b/composer_manager.info.yml
index c966adf..20bbb9e 100644
--- a/composer_manager.info.yml
+++ b/composer_manager.info.yml
@@ -1,6 +1,6 @@
 name: 'Composer Manager'
 description: 'Provides consolidated management of third-party, Composer-compatible packages that are required by contributed modules.'
-package: Other
+package: Composer
 core: '8.x'
 type: module
 
diff --git a/lib/Drupal/composer_manager/ComposerManager.php b/lib/Drupal/composer_manager/ComposerManager.php
index 9daf7ba..d3e8054 100644
--- a/lib/Drupal/composer_manager/ComposerManager.php
+++ b/lib/Drupal/composer_manager/ComposerManager.php
@@ -41,6 +41,11 @@ class ComposerManager implements ComposerManagerInterface {
   protected $autoloaderRegistered = false;
 
   /**
+   * @var array
+   */
+  private $corePackages = array();
+
+  /**
    * Constructs a \Drupal\composer_manager\ComposerManager object.
    *
    * @param \Drupal\Core\Config\ConfigFactory $config_factory
@@ -167,6 +172,29 @@ class ComposerManager implements ComposerManagerInterface {
   }
 
   /**
+   * Returns an associative array of packages included in core to version.
+   *
+   * @return \Drupal\composer_manager\ComposerFileInterface
+   */
+  public function getCorePackages() {
+    if (!$this->corePackages) {
+
+      $composer_lock = new ComposerFile(DRUPAL_ROOT . '/composer.lock');
+      $filedata = $composer_lock->read();
+
+      foreach ($filedata['packages'] as $package) {
+        $this->corePackages[$package['name']] = $package['version'];
+        if ('dev-master' == $package['version']) {
+          $this->corePackages[$package['name']] .= '#' . $package['source']['reference'];
+        }
+      }
+
+    }
+
+    return $this->corePackages;
+  }
+
+  /**
    * Returns TRUE if the Composer Manager module is configured to automatically
    * build the consolidated composer.json file or Drupal is being run via the
    * command line (Drush assumed).
diff --git a/lib/Drupal/composer_manager/ComposerManagerInterface.php b/lib/Drupal/composer_manager/ComposerManagerInterface.php
index fd2ac5a..a1c6fa9 100644
--- a/lib/Drupal/composer_manager/ComposerManagerInterface.php
+++ b/lib/Drupal/composer_manager/ComposerManagerInterface.php
@@ -79,6 +79,13 @@ interface ComposerManagerInterface {
   public function getAutoloadFilepath();
 
   /**
+   * Returns an associative array of packages included in core to version.
+   *
+   * @return \Drupal\composer_manager\ComposerFileInterface
+   */
+  public function getCorePackages();
+
+  /**
    * Returns TRUE if the Composer Manager module is configured to automatically
    * build the consolidated composer.json file or Drupal is being run via the
    * command line (Drush assumed).
diff --git a/lib/Drupal/composer_manager/ComposerPackages.php b/lib/Drupal/composer_manager/ComposerPackages.php
index 32e91aa..5bda315 100644
--- a/lib/Drupal/composer_manager/ComposerPackages.php
+++ b/lib/Drupal/composer_manager/ComposerPackages.php
@@ -274,7 +274,10 @@ class ComposerPackages implements ComposerPackagesInterface {
     foreach ($filedata as $module => $json) {
 
       if (!$merged) {
-        $merged = array('require' => array());
+        $merged = array(
+          'require' => array(),
+          'replace' => array(),
+        );
         $directory = $this->getRelativeVendorDirectory();
         if (0 !== strlen($directory) && 'vendor' != $directory) {
           $merged['config']['vendor-dir'] = $directory;
@@ -342,6 +345,22 @@ class ComposerPackages implements ComposerPackagesInterface {
       }
     }
 
+    // Replace all core packages if we are installing to a different vendor dir.
+    if ($this->manager->getVendorDirectory() != DRUPAL_ROOT . '/core/vendor') {
+      $merged['replace'] += $this->manager->getCorePackages();
+
+      // Replacing dev-master versions can cause dependency issues.
+      if (strpos($merged['replace']['doctrine/annotations'], 'dev-master') === 0) {
+        $merged['replace']['doctrine/annotations'] = '>=1.1.2';
+      }
+      if (strpos($merged['replace']['doctrine/common'], 'dev-master') === 0) {
+        $merged['replace']['doctrine/common'] = '>=2.4.1';
+      }
+      if (strpos($merged['replace']['symfony/yaml'], 'dev-master') === 0) {
+        $merged['replace']['symfony/yaml'] = '>=2.4.1';
+      }
+    }
+
     $this->moduleHandler->alter('composer_json', $merged);
     return $merged;
   }
diff --git a/modules/guzzle_dependency/guzzle_dependency.info.yml b/modules/guzzle_dependency/guzzle_dependency.info.yml
new file mode 100644
index 0000000..561142e
--- /dev/null
+++ b/modules/guzzle_dependency/guzzle_dependency.info.yml
@@ -0,0 +1,7 @@
+name: 'Guzzle Dependency'
+description: 'Required by modules that depend on the guzzle/guzzle package.'
+package: Composer
+core: '8.x'
+type: module
+dependencies:
+  - composer_manager
\ No newline at end of file
diff --git a/modules/guzzle_dependency/guzzle_dependency.module b/modules/guzzle_dependency/guzzle_dependency.module
new file mode 100644
index 0000000..2ca2604
--- /dev/null
+++ b/modules/guzzle_dependency/guzzle_dependency.module
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * Implements hook_composer_json_alter().
+ */
+function guzzle_dependency_composer_json_alter(&$json) {
+  $packages = Drupal::service('composer_manager.manager')->getCorePackages();
+  $version = $packages['guzzle/http'];
+
+  // Replace the monolithic guzzle/guzzle package.
+  $json['replace']['guzzle/guzzle'] = $version;
+
+  // Require all components that make up the guzzle/guzzle package.
+  $json['require']['guzzle/batch'] = $version;
+  $json['require']['guzzle/cache'] = $version;
+  $json['require']['guzzle/iterator'] = $version;
+  $json['require']['guzzle/log'] = $version;
+  $json['require']['guzzle/plugin'] = $version;
+  $json['require']['guzzle/service'] = $version;
+}
diff --git a/modules/symfony_dependency/symfony_dependency.info.yml b/modules/symfony_dependency/symfony_dependency.info.yml
new file mode 100644
index 0000000..74fe511
--- /dev/null
+++ b/modules/symfony_dependency/symfony_dependency.info.yml
@@ -0,0 +1,7 @@
+name: 'Symfony Dependency'
+description: 'Required by modules that depend on the symfony/symfony package.'
+package: Composer
+core: '8.x'
+type: module
+dependencies:
+  - composer_manager
\ No newline at end of file
diff --git a/modules/symfony_dependency/symfony_dependency.module b/modules/symfony_dependency/symfony_dependency.module
new file mode 100644
index 0000000..5815b96
--- /dev/null
+++ b/modules/symfony_dependency/symfony_dependency.module
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * Implements hook_composer_json_alter().
+ */
+function symfony_dependency_composer_json_alter(&$json) {
+  $packages = Drupal::service('composer_manager.manager')->getCorePackages();
+  $version = $packages['symfony/event-dispatcher'];
+
+  // Replace the monolithic symfony/symfony package.
+  $json['replace']['symfony/symfony'] = $version;
+
+  // Require all components that make up the symfony/symfony package.
+  $json['require']['symfony/browser-kit'] = $version;
+  $json['require']['symfony/console'] = $version;
+  $json['require']['symfony/css-selector'] = $version;
+  $json['require']['symfony/doctrine-bridge'] = $version;
+  $json['require']['symfony/finder'] = $version;
+  $json['require']['symfony/framework-bundle'] = $version;
+  $json['require']['symfony/locale'] = $version;
+  $json['require']['symfony/monolog-bridge'] = $version;
+  $json['require']['symfony/options-resolver'] = $version;
+  $json['require']['symfony/propel1-bridge'] = $version;
+  $json['require']['symfony/property-access'] = $version;
+  $json['require']['symfony/proxy-manager-bridge'] = $version;
+  $json['require']['symfony/security-acl'] = $version;
+  $json['require']['symfony/security-http'] = $version;
+  $json['require']['symfony/security-bundle'] = $version;
+  $json['require']['symfony/swiftmailer-bridge'] = $version;
+  $json['require']['symfony/twig-bundle'] = $version;
+  $json['require']['symfony/web-profiler-bundle'] = $version;
+}
diff --git a/modules/zendframework_dependency/zendframework_dependency.info.yml b/modules/zendframework_dependency/zendframework_dependency.info.yml
new file mode 100644
index 0000000..369b23a
--- /dev/null
+++ b/modules/zendframework_dependency/zendframework_dependency.info.yml
@@ -0,0 +1,7 @@
+name: 'Zend Framework Dependency'
+description: 'Required by modules that depend on the zendframework/zendframework package.'
+package: Composer
+core: '8.x'
+type: module
+dependencies:
+  - composer_manager
\ No newline at end of file
diff --git a/modules/zendframework_dependency/zendframework_dependency.module b/modules/zendframework_dependency/zendframework_dependency.module
new file mode 100644
index 0000000..11df726
--- /dev/null
+++ b/modules/zendframework_dependency/zendframework_dependency.module
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Implements hook_composer_json_alter().
+ */
+function zendframework_dependency_composer_json_alter(&$json) {
+  $packages = Drupal::service('composer_manager.manager')->getCorePackages();
+  $version = $packages['zendframework/zend-feed'];
+
+  // Replace the monolithic zendframework/zendframework package.
+  $json['replace']['zendframework/zendframework'] = $version;
+
+  // Require all components that make up the zendframework/zendframework package.
+  $json['require']['zendframework/zend-authentication'] = $version;
+  $json['require']['zendframework/zend-barcode'] = $version;
+  $json['require']['zendframework/zend-cache'] = $version;
+  $json['require']['zendframework/zend-captcha'] = $version;
+  $json['require']['zendframework/zend-config'] = $version;
+  $json['require']['zendframework/zend-db'] = $version;
+  $json['require']['zendframework/zend-debug'] = $version;
+  $json['require']['zendframework/zend-di'] = $version;
+  $json['require']['zendframework/zend-file'] = $version;
+  $json['require']['zendframework/zend-filter'] = $version;
+  $json['require']['zendframework/zend-form'] = $version;
+  $json['require']['zendframework/zend-i18n'] = $version;
+  $json['require']['zendframework/zend-ldap'] = $version;
+  $json['require']['zendframework/zend-log'] = $version;
+  $json['require']['zendframework/zend-mail'] = $version;
+  $json['require']['zendframework/zend-memory'] = $version;
+  $json['require']['zendframework/zend-modulemanager'] = $version;
+  $json['require']['zendframework/zend-navigation'] = $version;
+  $json['require']['zendframework/zend-paginator'] = $version;
+  $json['require']['zendframework/zend-permissions-acl'] = $version;
+  $json['require']['zendframework/zend-permissions-rbac'] = $version;
+  $json['require']['zendframework/zend-progressbar'] = $version;
+  $json['require']['zendframework/zend-serializer'] = $version;
+  $json['require']['zendframework/zend-session'] = $version;
+  $json['require']['zendframework/zend-soap'] = $version;
+  $json['require']['zendframework/zend-tag'] = $version;
+  $json['require']['zendframework/zend-test'] = $version;
+  $json['require']['zendframework/zend-text'] = $version;
+  $json['require']['zendframework/zend-version'] = $version;
+  $json['require']['zendframework/zend-xmlrpc'] = $version;
+}
