diff --git a/.jshintignore b/.jshintignore
index 8e10f1a..2aba58b 100644
--- a/.jshintignore
+++ b/.jshintignore
@@ -7,10 +7,12 @@ core/misc/jquery.ba-bbq.js
 core/misc/jquery.form.js
 core/misc/jquery.js
 core/misc/jquery.once.js
+core/misc/jquery.ui.touch-punch.js
 core/misc/modernizr
 core/misc/normalize
 core/misc/ui
 core/misc/underscore
+core/misc/domready
 core/misc/vie
 core/modules/tour/js/jquery.joyride-2.0.3.js
 core/vendor
diff --git a/.jshintrc b/.jshintrc
index 288c1a9..ec60f53 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -2,13 +2,14 @@
   "browser"   : true,
   "curly"     : true,
   "eqeqeq"    : true,
-  "expr"      : true,
   "forin"     : true,
   "latedef"   : true,
   "newcap"    : true,
   "noarg"     : true,
+  "strict"    : true,
   "trailing"  : true,
   "undef"     : true,
+  "unused"    : "vars",
   "predef"    : [
     "Drupal",
     "drupalSettings",
diff --git a/core/includes/config.inc b/core/includes/config.inc
index 31f6e5b..32ba50d 100644
--- a/core/includes/config.inc
+++ b/core/includes/config.inc
@@ -22,12 +22,6 @@
  *   The name of the module or theme to install default configuration for.
  */
 function config_install_default_config($type, $name) {
-  // If this module defines any ConfigEntity types then create an empty
-  // manifest file for each of them.
-  foreach (config_get_module_config_entities($name) as $entity_info) {
-    config('manifest.' . $entity_info['config_prefix'])->save();
-  }
-
   $config_dir = drupal_get_path($type, $name) . '/config';
   if (is_dir($config_dir)) {
     $source_storage = new FileStorage($config_dir);
@@ -60,12 +54,6 @@ function config_uninstall_default_config($type, $name) {
   foreach ($config_names as $config_name) {
     config($config_name)->delete();
   }
-
-  // If this module defines any ConfigEntity types, then delete the manifest
-  // file for each of them.
-  foreach (config_get_module_config_entities($name) as $entity_type) {
-    config('manifest.' . $entity_info['config_prefix'])->delete();
-  }
 }
 
 /**
diff --git a/core/includes/update.inc b/core/includes/update.inc
index a5feb50..d1ce053 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -1457,29 +1457,6 @@ function update_variables_to_config($config_name, array $variable_map) {
 }
 
 /**
- * Adds entries in a configuration entity manifest file during updates.
- *
- * @param string $config_prefix
- *   The configuration entity prefix from the annotation.
- * @param array $ids
- *   An array of configuration entities to add to the manifest.
- */
-function update_config_manifest_add($config_prefix, array $ids) {
-  $manifest = config('manifest.' . $config_prefix);
-
-  // Add record to manifest for each config entity. Operate on the data array
-  // as a whole, because $manifest->get() would treat dots in ids as nesting.
-  $data = $manifest->get();
-  foreach ($ids as $id) {
-    $data[$id] = array('name' => $config_prefix . '.' . $id);
-  }
-  $manifest->setData($data);
-
-  // Write manifest to disk.
-  $manifest->save();
-}
-
-/**
  * Installs a default configuration file into the active store.
  *
  * Provide a generalised method to save a default configuration object for an
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
index fbf4fdc..5d99f68 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigStorageController.php
@@ -327,15 +327,6 @@ public function delete(array $entities) {
     foreach ($entities as $id => $entity) {
       $config = config($this->getConfigPrefix() . $entity->id());
       $config->delete();
-
-      // Remove the entity from the manifest file. Entity IDs can contain a dot
-      // so we can not use Config::clear() to remove the entity from the
-      // manifest.
-      $manifest = config('manifest.' . $this->entityInfo['config_prefix']);
-      $manifest_data = $manifest->get();
-      unset($manifest_data[$entity->id()]);
-      $manifest->setData($manifest_data);
-      $manifest->save();
     }
 
     $this->postDelete($entities);
@@ -405,29 +396,6 @@ public function save(EntityInterface $entity) {
       $this->postSave($entity, FALSE);
       $this->invokeHook('insert', $entity);
     }
-
-    $update_manifest = FALSE;
-    $config = config('manifest.' . $this->entityInfo['config_prefix']);
-    $manifest = $config->get();
-    // If the save operation resulted in a rename remove the old entity id from
-    // the manifest file.
-    if ($id !== $entity->id()) {
-      // Entity IDs can contain a dot so we can not use Config::clear() to
-      // remove the entity from the manifest.
-      unset($manifest[$id]);
-      $update_manifest = TRUE;
-    }
-    // Add this entity to the manifest file if necessary.
-    if (!isset($manifest[$entity->id()])) {
-      $manifest[$entity->id()] = array(
-        'name' => $this->getConfigPrefix() . $entity->id(),
-      );
-      $update_manifest = TRUE;
-    }
-    if ($update_manifest) {
-      $config->setData($manifest)->save();
-    }
-
     unset($entity->original);
 
     return $return;
diff --git a/core/lib/Drupal/Core/Config/StorageComparer.php b/core/lib/Drupal/Core/Config/StorageComparer.php
index c7fa957..834f439 100644
--- a/core/lib/Drupal/Core/Config/StorageComparer.php
+++ b/core/lib/Drupal/Core/Config/StorageComparer.php
@@ -139,13 +139,10 @@ public function addChangelistCreate() {
    */
   public function addChangelistUpdate() {
     foreach (array_intersect($this->getSourceNames(), $this->getTargetNames()) as $name) {
-      // Ignore manifest files.
-      if (substr($name, 0, 9) != 'manifest.') {
-        $source_config_data = $this->sourceStorage->read($name);
-        $target_config_data = $this->targetStorage->read($name);
-        if ($source_config_data !== $target_config_data) {
-          $this->addChangeList('update', array($name));
-        }
+      $source_config_data = $this->sourceStorage->read($name);
+      $target_config_data = $this->targetStorage->read($name);
+      if ($source_config_data !== $target_config_data) {
+        $this->addChangeList('update', array($name));
       }
     }
     return $this;
diff --git a/core/lib/Drupal/Core/Config/StorageComparerManifest.php b/core/lib/Drupal/Core/Config/StorageComparerManifest.php
deleted file mode 100644
index 2f8836d..0000000
--- a/core/lib/Drupal/Core/Config/StorageComparerManifest.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Config\StorageComparerManifest.
- */
-
-namespace Drupal\Core\Config;
-
-/**
- * Defines a config storage comparer that uses config entity manifests.
- *
- * Config entities maintain 'manifest' files that list the objects they are
- * currently handling. Each file is a simple indexed array of config object
- * names. In order to generate a list of objects that have been created or
- * deleted we need to open these files in both the source and target storage,
- * generate an array of the objects, and compare them.
- */
-class StorageComparerManifest extends StorageComparer {
-
-  /**
-   * List of config entities managed by manifests in the source storage.
-   *
-   * @see \Drupal\Core\Config\StorageComparerManifest::getSourceManifestData()
-   *
-   * @var array
-   */
-  protected $sourceManifestData = array();
-
-  /**
-   * List of config entities managed by manifests in the target storage.
-   *
-   * @see \Drupal\Core\Config\StorageComparerManifest::getTargetManifestData()
-   *
-   * @var array
-   */
-  protected $targetManifestData = array();
-
-  /**
-   * {@inheritdoc}
-   */
-  public function addChangelistDelete() {
-    foreach (array_diff_key($this->getTargetManifestData(), $this->getSourceManifestData()) as $value) {
-      $this->addChangeList('delete', array($value['name']));
-    }
-    return $this;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function addChangelistCreate() {
-    foreach (array_diff_key($this->getSourceManifestData(), $this->getTargetManifestData()) as $value) {
-      $this->addChangeList('create', array($value['name']));
-    }
-    return $this;
-  }
-
-  /**
-   * Gets the list of config entities from the source storage's manifest files.
-   *
-   * @return array
-   *   The list of config entities in the source storage whose entity type has a
-   *   manifest in the source storage.
-   */
-  protected function getSourceManifestData() {
-    if (empty($this->sourceManifestData)) {
-      foreach ($this->getSourceStorage()->listAll('manifest') as $name) {
-        if ($source_manifest_data = $this->getSourceStorage()->read($name)) {
-          $this->sourceManifestData = array_merge($this->sourceManifestData, $source_manifest_data);
-        }
-      }
-    }
-    return $this->sourceManifestData;
-  }
-
-  /**
-   * Gets the list of config entities from the target storage's manifest files.
-   *
-   * @see \Drupal\Core\Config\ConfigImporter::getSourceManifestData()
-   *
-   * @return array
-   *   The list of config entities in the target storage whose entity type has a
-   *   manifest in the source storage.
-   */
-  protected function getTargetManifestData() {
-    if (empty($this->targetManifestData)) {
-      foreach ($this->getSourceStorage()->listAll('manifest') as $name) {
-        if ($target_manifest_data = $this->targetStorage->read($name)) {
-          $this->targetManifestData = array_merge($this->targetManifestData, $target_manifest_data);
-        }
-      }
-    }
-    return $this->targetManifestData;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function reset() {
-    $this->sourceManifestData = $this->targetManifestData = array();
-    return parent::reset();
-  }
-
-}
diff --git a/core/modules/block/block.install b/core/modules/block/block.install
index bb9806e..3aaa637 100644
--- a/core/modules/block/block.install
+++ b/core/modules/block/block.install
@@ -270,7 +270,6 @@ function block_update_8008() {
         'type' => 'text_textarea_with_summary',
       ))
       ->save();
-    update_config_manifest_add('entity.form_display', array($form_display->get('id')));
 
     // Initialize state for future calls.
     $sandbox['last'] = 0;
diff --git a/core/modules/ckeditor/js/ckeditor.js b/core/modules/ckeditor/js/ckeditor.js
index f5d4317..447f916 100644
--- a/core/modules/ckeditor/js/ckeditor.js
+++ b/core/modules/ckeditor/js/ckeditor.js
@@ -27,7 +27,9 @@ Drupal.editors.ckeditor = {
     var editor = CKEDITOR.dom.element.get(element).getEditor();
     if (editor) {
       var changed = function () {
-        callback(editor.getData());
+        window.setTimeout(function () {
+          callback(editor.getData());
+        }, 0);
       };
       // @todo Make this more elegant once http://dev.ckeditor.com/ticket/9794
       // is fixed.
diff --git a/core/modules/config/config.admin.inc b/core/modules/config/config.admin.inc
index a961286..53912bf 100644
--- a/core/modules/config/config.admin.inc
+++ b/core/modules/config/config.admin.inc
@@ -9,7 +9,7 @@
 use Drupal\Core\Ajax\OpenModalDialogCommand;
 use Drupal\Core\Config\ConfigException;
 use Drupal\Core\Config\ConfigImporter;
-use Drupal\Core\Config\StorageComparerManifest;
+use Drupal\Core\Config\StorageComparer;
 use Drupal\Core\Config\StorageInterface;
 
 /**
@@ -27,16 +27,8 @@
  */
 function config_admin_sync_form(array &$form, array &$form_state, StorageInterface $source_storage) {
   $source_list = $source_storage->listAll();
-  if (empty($source_list)) {
-    $form['no_changes'] = array(
-      '#markup' => t('There is no configuration to import.'),
-    );
-    $form['actions']['#access'] = FALSE;
-    return $form;
-  }
-
-  $config_comparer = new StorageComparerManifest(Drupal::service('config.storage.staging'), Drupal::service('config.storage'));
-  if (!$config_comparer->createChangelist()->hasChanges()) {
+  $config_comparer = new StorageComparer(Drupal::service('config.storage.staging'), Drupal::service('config.storage'));
+  if (empty($source_list) || !$config_comparer->createChangelist()->hasChanges()) {
     $form['no_changes'] = array(
       '#markup' => t('There are no configuration changes.'),
     );
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
index 84fbc97..37b79d7 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigEntityTest.php
@@ -34,7 +34,6 @@ public static function getInfo() {
    * Tests CRUD operations.
    */
   function testCRUD() {
-    $manifest_name = 'manifest.config_test.dynamic';
     $default_langcode = language_default()->langcode;
     // Verify default properties on a newly created empty entity.
     $empty = entity_create('config_test', array());
@@ -122,10 +121,6 @@ function testCRUD() {
       $this->fail('EntityMalformedException was not thrown.');
     }
 
-    // Verify that the config manifest entry exists.
-    $manifest_data = config($manifest_name)->get();
-    $this->assertTrue(isset($manifest_data[$config_test->id()]), 'Configuration manifest for config_test.dynamic entities updated after an entity save.');
-
     // Verify that the correct status is returned and properties did not change.
     $this->assertIdentical($status, SAVED_NEW);
     $this->assertIdentical($config_test->id(), $expected['id']);
@@ -180,13 +175,6 @@ function testCRUD() {
       // Verify that originalID points to new ID directly after renaming.
       $this->assertIdentical($config_test->id(), $new_id);
       $this->assertIdentical($config_test->getOriginalID(), $new_id);
-
-      // Verify that the config manifest entry exists.
-      $manifest_data = config($manifest_name)->get();
-      // Check that the old id is not in the manifest.
-      $this->assertFalse(isset($manifest_data[$old_id]), 'Old id removed from configuration manifest after an entity save.');
-      // Check that the new id is in the manifest.
-      $this->assertTrue(isset($manifest_data[$new_id]), 'New id added to configuration manifest after an entity save.');
     }
 
     // Test config entity prepopulation.
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
index 61c6e47..64f05fd 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImportUITest.php
@@ -29,6 +29,7 @@ function setUp() {
 
     $this->web_user = $this->drupalCreateUser(array('synchronize configuration'));
     $this->drupalLogin($this->web_user);
+    $this->copyConfig($this->container->get('config.storage'), $this->container->get('config.storage.staging'));
   }
 
   /**
@@ -40,13 +41,8 @@ function testImport() {
     $storage = $this->container->get('config.storage');
     $staging = $this->container->get('config.storage.staging');
 
-    // Verify the configuration to create and update does not exist yet.
-    $this->assertIdentical($staging->exists($name), FALSE, $name . ' not found.');
-    $this->assertIdentical($staging->exists($dynamic_name), FALSE, $dynamic_name . ' not found.');
-
-    // Verify that the import UI recognises that the staging folder is empty.
     $this->drupalGet('admin/config/development/sync');
-    $this->assertText('There is no configuration to import.');
+    $this->assertText('There are no configuration changes.');
     $this->assertNoFieldById('edit-submit', t('Import all'));
 
     // Create updated configuration object.
@@ -65,15 +61,9 @@ function testImport() {
       'protected_property' => '',
     );
     $staging->write($dynamic_name, $original_dynamic_data);
-
-    // Create manifest for new config entity.
-    $manifest_data = config('manifest.config_test.dynamic')->get();
-    $manifest_data[$original_dynamic_data['id']]['name'] = 'config_test.dynamic.' . $original_dynamic_data['id'];
-    $staging->write('manifest.config_test.dynamic', $manifest_data);
-
     $this->assertIdentical($staging->exists($dynamic_name), TRUE, $dynamic_name . ' found.');
 
-    // Verify that both appear as new.
+    // Verify that both appear as ready to import.
     $this->drupalGet('admin/config/development/sync');
     $this->assertText($name);
     $this->assertText($dynamic_name);
@@ -81,13 +71,12 @@ function testImport() {
 
     // Import and verify that both do not appear anymore.
     $this->drupalPost(NULL, array(), t('Import all'));
-    $this->assertUrl('admin/config/development/sync');
     $this->assertNoText($name);
     $this->assertNoText($dynamic_name);
     $this->assertNoFieldById('edit-submit', t('Import all'));
 
     // Verify that there are no further changes to import.
-    $this->assertText(t('There is no configuration to import.'));
+    $this->assertText(t('There are no configuration changes.'));
 
     // Verify site name has changed.
     $this->assertIdentical($new_site_name, config('system.site')->get('name'));
@@ -117,7 +106,6 @@ function testImportLock() {
 
     // Attempt to import configuration and verify that an error message appears.
     $this->drupalPost(NULL, array(), t('Import all'));
-    $this->assertUrl('admin/config/development/sync');
     $this->assertText(t('Another request may be synchronizing configuration already.'));
 
     // Release the lock, just to keep testing sane.
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigImporterTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigImporterTest.php
index 9d1e6be..d17f8b4 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigImporterTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigImporterTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\config\Tests;
 
 use Drupal\Core\Config\ConfigImporter;
-use Drupal\Core\Config\StorageComparerManifest;
+use Drupal\Core\Config\StorageComparer;
 use Drupal\simpletest\DrupalUnitTestBase;
 
 /**
@@ -50,9 +50,10 @@ function setUp() {
     unset($GLOBALS['hook_config_test']);
 
     // Set up the ConfigImporter object for testing.
-    $config_comparer = new StorageComparerManifest(
+    $config_comparer = new StorageComparer(
       $this->container->get('config.storage.staging'),
-      $this->container->get('config.storage'));
+      $this->container->get('config.storage')
+    );
     $this->configImporter = new ConfigImporter(
       $config_comparer->createChangelist(),
       $this->container->get('event_dispatcher'),
@@ -60,6 +61,7 @@ function setUp() {
       $this->container->get('plugin.manager.entity'),
       $this->container->get('lock')
     );
+    $this->copyConfig($this->container->get('config.storage'), $this->container->get('config.storage.staging'));
   }
 
   /**
@@ -88,12 +90,13 @@ function testDeleted() {
     $config = config($dynamic_name);
     $this->assertIdentical($config->get('id'), 'dotted.default');
 
-    // Create an empty manifest to delete the configuration object.
-    $staging->write('manifest.config_test.dynamic', array());
+    // Delete the file from the staging directory.
+    $staging->delete($dynamic_name);
+
     // Import.
     $this->configImporter->reset()->import();
 
-    // Verify the values have disappeared.
+    // Verify the file has been removed.
     $this->assertIdentical($storage->read($dynamic_name), FALSE);
 
     $config = config($dynamic_name);
@@ -122,8 +125,6 @@ function testNew() {
     // Verify the configuration to create does not exist yet.
     $this->assertIdentical($storage->exists($dynamic_name), FALSE, $dynamic_name . ' not found.');
 
-    $this->assertIdentical($staging->exists($dynamic_name), FALSE, $dynamic_name . ' not found.');
-
     // Create new config entity.
     $original_dynamic_data = array(
       'id' => 'new',
@@ -136,11 +137,6 @@ function testNew() {
     );
     $staging->write($dynamic_name, $original_dynamic_data);
 
-    // Create manifest for new config entity.
-    $manifest_data = config('manifest.config_test.dynamic')->get();
-    $manifest_data[$original_dynamic_data['id']]['name'] = 'config_test.dynamic.' . $original_dynamic_data['id'];
-    $staging->write('manifest.config_test.dynamic', $manifest_data);
-
     $this->assertIdentical($staging->exists($dynamic_name), TRUE, $dynamic_name . ' found.');
 
     // Import.
@@ -184,9 +180,6 @@ function testUpdated() {
     $original_dynamic_data = $storage->read($dynamic_name);
     $original_dynamic_data['label'] = 'Updated';
     $staging->write($dynamic_name, $original_dynamic_data);
-    // Create manifest for updated config entity.
-    $manifest_data = config('manifest.config_test.dynamic')->get();
-    $staging->write('manifest.config_test.dynamic', $manifest_data);
 
     // Verify the active configuration still returns the default values.
     $config = config($name);
@@ -218,5 +211,5 @@ function testUpdated() {
     // Verify that there is nothing more to import.
     $this->assertFalse($this->configImporter->hasUnprocessedChanges());
   }
-
 }
+
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigInstallTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigInstallTest.php
index 4cb9ea3..3d4093d 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigInstallTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigInstallTest.php
@@ -35,13 +35,6 @@ function setUp() {
   function testModuleInstallation() {
     $default_config = 'config_test.system';
     $default_configuration_entity = 'config_test.dynamic.dotted.default';
-    $default_config_manifest = 'manifest.config_test.dynamic';
-    $expected_manifest_data = array(
-      'dotted.default' => array(
-        'name' => 'config_test.dynamic.dotted.default',
-      ),
-    );
-    $default_empty_config_manifest = 'manifest.config_test.empty_manifest';
 
     // Verify that default module config does not exist before installation yet.
     $config = config($default_config);
@@ -49,12 +42,6 @@ function testModuleInstallation() {
     $config = config($default_configuration_entity);
     $this->assertIdentical($config->isNew(), TRUE);
 
-    // Verify that configuration entity manifests do not exist.
-    $config = config($default_config_manifest);
-    $this->assertIdentical($config->isNew(), TRUE);
-    $config = config($default_empty_config_manifest);
-    $this->assertIdentical($config->isNew(), TRUE);
-
     // Install the test module.
     $this->enableModules(array('config_test'));
     $this->installConfig(array('config_test'));
@@ -65,13 +52,6 @@ function testModuleInstallation() {
     $config = config($default_configuration_entity);
     $this->assertIdentical($config->isNew(), FALSE);
 
-    // Verify that configuration entity manifests have been created with
-    // expected contents.
-    $config = config($default_config_manifest);
-    $this->assertIdentical($config->get(), $expected_manifest_data);
-    $config = config($default_empty_config_manifest);
-    $this->assertIdentical($config->get(), array());
-
     // Verify that configuration import callback was invoked for the dynamic
     // configuration entity.
     $this->assertTrue($GLOBALS['hook_config_import']);
diff --git a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php b/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php
deleted file mode 100644
index a122204..0000000
--- a/core/modules/config/tests/config_test/lib/Drupal/config_test/Plugin/Core/Entity/ConfigTestEmptyManifest.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\config_test\Plugin\Core\Entity\ConfigTestEmptyManifest.
- */
-
-namespace Drupal\config_test\Plugin\Core\Entity;
-
-use Drupal\Core\Config\Entity\ConfigEntityBase;
-use Drupal\Core\Entity\Annotation\EntityType;
-use Drupal\Core\Annotation\Translation;
-
-/**
- * Defines the ConfigTestEmptyManifest configuration entity.
- *
- * @EntityType(
- *   id = "config_test_empty_manifest",
- *   label = @Translation("Test empty manifest creation"),
- *   module = "config_test",
- *   controllers = {
- *     "storage" = "Drupal\config_test\ConfigTestStorageController"
- *   },
- *   config_prefix = "config_test.empty_manifest",
- *   entity_keys = {
- *     "id" = "id",
- *     "label" = "label",
- *     "uuid" = "uuid"
- *   }
- * )
- */
-class ConfigTestEmptyManifest extends ConfigEntityBase {
-
-  /**
-   * The machine name for the configuration entity.
-   *
-   * @var string
-   */
-  public $id;
-
-  /**
-   * The UUID for the configuration entity.
-   *
-   * @var string
-   */
-  public $uuid;
-
-  /**
-   * The human-readable name of the configuration entity.
-   *
-   * @var string
-   */
-  public $label;
-
-}
diff --git a/core/modules/contact/contact.install b/core/modules/contact/contact.install
index d35abe9..5cb7e01 100644
--- a/core/modules/contact/contact.install
+++ b/core/modules/contact/contact.install
@@ -78,8 +78,6 @@ function contact_update_8001() {
       ->set('langcode', LANGUAGE_NOT_SPECIFIED)
       ->save();
   }
-
-  update_config_manifest_add('contact.category', $ids);
 }
 
 /**
diff --git a/core/modules/field/field.install b/core/modules/field/field.install
index dc20e25..007f29f 100644
--- a/core/modules/field/field.install
+++ b/core/modules/field/field.install
@@ -376,13 +376,11 @@ function field_update_8002() {
   foreach ($form_displays as $config) {
     $config->save();
   }
-  update_config_manifest_add('entity.form_display', array_keys($form_displays));
 
   // Save the displays to configuration.
   foreach ($displays as $config) {
     $config->save();
   }
-  update_config_manifest_add('entity.display', array_keys($displays));
 }
 
 /**
@@ -511,10 +509,6 @@ function field_update_8003() {
     }
   }
 
-  // Create the manifest files.
-  update_config_manifest_add('field.field', $manifest_ids['fields']);
-  update_config_manifest_add('field.instance', $manifest_ids['instances']);
-
   // Save the deleted fields and instances in state.
   $state->set('field.field.deleted', $deleted_fields);
   $state->set('field.instance.deleted', $deleted_instances);
diff --git a/core/modules/filter/filter.install b/core/modules/filter/filter.install
index 45955ad..b450c36 100644
--- a/core/modules/filter/filter.install
+++ b/core/modules/filter/filter.install
@@ -52,7 +52,6 @@ function filter_update_8001() {
     $config = config('filter.format.' . $id);
     $config->setData($format);
     $config->save();
-    update_config_manifest_add('filter.format', array($id));
   }
 }
 
diff --git a/core/modules/menu/menu.install b/core/modules/menu/menu.install
index a76207b..ae94f90 100644
--- a/core/modules/menu/menu.install
+++ b/core/modules/menu/menu.install
@@ -86,6 +86,6 @@ function menu_update_8004() {
       ->set('label', $menu->title)
       ->set('description', $menu->description)
       ->save();
-    update_config_manifest_add('menu.menu', array($menu->menu_name));
   }
 }
+
diff --git a/core/modules/shortcut/shortcut.install b/core/modules/shortcut/shortcut.install
index 4a84150..d78fa3b 100644
--- a/core/modules/shortcut/shortcut.install
+++ b/core/modules/shortcut/shortcut.install
@@ -91,7 +91,6 @@ function shortcut_update_8000() {
       ->save();
     $ids[] = $set->set_name;
   }
-  update_config_manifest_add('shortcut.set', $ids);
 }
 
 /**
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
index 6e791b3..c76d6c6 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/TestBase.php
@@ -10,9 +10,10 @@
 use Drupal\Core\Database\Database;
 use Drupal\Component\Utility\Settings;
 use Drupal\Core\Config\ConfigImporter;
-use Drupal\Core\Config\StorageComparerManifest;
+use Drupal\Core\Config\StorageComparer;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\Core\Database\ConnectionNotDefinedException;
+use Drupal\Core\Config\StorageInterface;
 use Drupal\Core\DrupalKernel;
 use ReflectionMethod;
 use ReflectionObject;
@@ -1291,9 +1292,10 @@ public static function filePreDeleteCallback($path) {
   public function configImporter() {
     if (!$this->configImporter) {
       // Set up the ConfigImporter object for testing.
-      $config_comparer = new StorageComparerManifest(
+      $config_comparer = new StorageComparer(
         $this->container->get('config.storage.staging'),
-        $this->container->get('config.storage'));
+        $this->container->get('config.storage')
+      );
       $this->configImporter = new ConfigImporter(
         $config_comparer,
         $this->container->get('event_dispatcher'),
@@ -1305,4 +1307,12 @@ public function configImporter() {
     // Always recalculate the changelist when called.
     return $this->configImporter->reset();
   }
+
+  public function copyConfig(StorageInterface $source_storage, StorageInterface $target_storage) {
+    $target_storage->deleteAll();
+    foreach ($source_storage->listAll() as $name) {
+      $target_storage->write($name, $source_storage->read($name));
+    }
+  }
 }
+
diff --git a/core/modules/toolbar/config/toolbar.settings.yml b/core/modules/toolbar/config/toolbar.settings.yml
index 8a98715..4df2f2a 100644
--- a/core/modules/toolbar/config/toolbar.settings.yml
+++ b/core/modules/toolbar/config/toolbar.settings.yml
@@ -1,3 +1,3 @@
 breakpoints:
-  - 'module.toolbar.narrow'
-  - 'module.toolbar.wide'
+  - module.toolbar.narrow
+  - module.toolbar.wide
diff --git a/core/modules/user/user.install b/core/modules/user/user.install
index 4f22958..e5efdc4 100644
--- a/core/modules/user/user.install
+++ b/core/modules/user/user.install
@@ -757,7 +757,6 @@ function user_update_8011() {
       'weight' => -1,
     ))
     ->save();
-  update_config_manifest_add('entity.form_display', array($form_display->get('id')));
 
   // Assign display settings for the 'default' and 'compact' view modes.
   $display = _update_8000_entity_get_display('user', 'user', 'default');
@@ -771,7 +770,6 @@ function user_update_8011() {
       'weight' => 0,
     ))
     ->save();
-  update_config_manifest_add('entity.display', array($display->get('id')));
 
   $display = _update_8000_entity_get_display('user', 'user', 'compact');
   $display->set('content.user_picture', array(
@@ -784,7 +782,6 @@ function user_update_8011() {
       'weight' => 0,
     ))
     ->save();
-  update_config_manifest_add('entity.display', array($display->get('id')));
 
   // Add file usage for the default field.
   if (!empty($default_image_fid)) {
@@ -1050,10 +1047,6 @@ function user_update_8017() {
       ->set('langcode', LANGUAGE_NOT_SPECIFIED)
       ->save();
   }
-
-  update_config_manifest_add('user.role', array_map(function ($role) {
-    return $role->rid;
-  }, $roles));
 }
 
 /**
