diff --git a/core/includes/common.inc b/core/includes/common.inc
index b7f84cb..2af84fc 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -8,6 +8,8 @@
  * a cached page are instead located in bootstrap.inc.
  */
 
+use Drupal\Component\Serialization\Yaml;
+use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Utility\Json;
 use Drupal\Component\Utility\Number;
@@ -21,8 +23,6 @@
 use Drupal\Core\Language\Language;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Yaml\Parser;
-use Symfony\Component\Yaml\Exception\ParseException;
 use Drupal\Core\PhpStorage\PhpStorageFactory;
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Datetime\DrupalDateTime;
diff --git a/core/lib/Drupal/Component/Discovery/DiscoverableInterface.php b/core/lib/Drupal/Component/Discovery/DiscoverableInterface.php
index 45f0494..02a5776 100644
--- a/core/lib/Drupal/Component/Discovery/DiscoverableInterface.php
+++ b/core/lib/Drupal/Component/Discovery/DiscoverableInterface.php
@@ -2,7 +2,7 @@
 
 /**
  * @file
- * Contains \Drupal\Core\Discovery\DiscoverableInterface.
+ * Contains \Drupal\Component\Discovery\DiscoverableInterface.
  */
 
 namespace Drupal\Component\Discovery;
diff --git a/core/lib/Drupal/Component/Discovery/YamlDiscovery.php b/core/lib/Drupal/Component/Discovery/YamlDiscovery.php
index 5ac0b7d..bf4ee15 100644
--- a/core/lib/Drupal/Component/Discovery/YamlDiscovery.php
+++ b/core/lib/Drupal/Component/Discovery/YamlDiscovery.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\Component\Discovery;
 
-use Symfony\Component\Yaml\Parser;
+use Drupal\Component\Serialization\Yaml;
 
 /**
  * Provides discovery for YAML files within a given set of directories.
@@ -29,13 +29,6 @@ class YamlDiscovery implements DiscoverableInterface {
   protected $directories = array();
 
   /**
-   * The symfony YAML parser.
-   *
-   * @var \Symfony\Component\Yaml\Parser
-   */
-  protected $parser;
-
-  /**
    * Constructs a YamlDiscovery object.
    *
    * @param string $name
@@ -54,29 +47,14 @@ public function __construct($name, array $directories) {
    */
   public function findAll() {
     $all = array();
-    $parser = $this->parser();
-
     foreach ($this->findFiles() as $provider => $file) {
-      $all[$provider] = $parser->parse(file_get_contents($file));
+      $all[$provider] = Yaml::decode(file_get_contents($file));
     }
 
     return $all;
   }
 
   /**
-   * Returns the YAML parser.
-   *
-   * @return \Symfony\Component\Yaml\Parser
-   *   The symfony YAML parser.
-   */
-  protected function parser() {
-    if (!isset($this->parser)) {
-      $this->parser = new Parser();
-    }
-    return $this->parser;
-  }
-
-  /**
    * Returns an array of file paths, keyed by provider.
    *
    * @return array
diff --git a/core/lib/Drupal/Component/Serialization/Exception/InvalidDataTypeException.php b/core/lib/Drupal/Component/Serialization/Exception/InvalidDataTypeException.php
new file mode 100644
index 0000000..e4f9211
--- /dev/null
+++ b/core/lib/Drupal/Component/Serialization/Exception/InvalidDataTypeException.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Component\Serialization\Exception\InvalidDataTypeException.
+ */
+
+namespace Drupal\Component\Serialization\Exception;
+
+/**
+ * Exception thrown when a data type is invalid.
+ */
+class InvalidDataTypeException extends \InvalidArgumentException {
+}
diff --git a/core/lib/Drupal/Component/Serialization/SerializationInterface.php b/core/lib/Drupal/Component/Serialization/SerializationInterface.php
new file mode 100644
index 0000000..c5e68f1
--- /dev/null
+++ b/core/lib/Drupal/Component/Serialization/SerializationInterface.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Component\Serialization\SerializationInterface.
+ */
+
+namespace Drupal\Component\Serialization;
+
+/**
+ * Defines an interface for serialization formats.
+ */
+interface SerializationInterface {
+
+  /**
+   * Encodes data into the serialization format.
+   *
+   * @param mixed $data
+   *   The data to encode.
+   *
+   * @return string
+   *   The encoded data.
+   */
+  public static function encode($data);
+
+  /**
+   * Decodes data from the serialization format.
+   *
+   * @param string $raw
+   *   The raw data string to decode.
+   *
+   * @return mixed
+   *   The decoded data.
+   */
+  public static function decode($raw);
+
+  /**
+   * Returns the file extension for this serialization format.
+   *
+   * @return string
+   *   The file extension, without leading dot.
+   */
+  public static function getFileExtension();
+
+}
diff --git a/core/lib/Drupal/Component/Serialization/Yaml.php b/core/lib/Drupal/Component/Serialization/Yaml.php
new file mode 100644
index 0000000..7d0f0c5
--- /dev/null
+++ b/core/lib/Drupal/Component/Serialization/Yaml.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Component\Serialization\Yaml.
+ */
+
+namespace Drupal\Component\Serialization;
+
+use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
+use Symfony\Component\Yaml\Yaml as Symfony;
+
+/**
+ * Default serialization for YAML using the Symfony component.
+ */
+class Yaml implements SerializationInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function encode($data) {
+    try {
+      return Symfony::dump($data, PHP_INT_MAX, 2, TRUE);
+    }
+    catch (\Exception $e) {
+      throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function decode($raw) {
+    try {
+      return Symfony::parse($raw, TRUE);
+    }
+    catch (\Exception $e) {
+      throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getFileExtension() {
+    return 'yml';
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Asset/LibraryDiscovery.php b/core/lib/Drupal/Core/Asset/LibraryDiscovery.php
index 130876a..2a25ea3 100644
--- a/core/lib/Drupal/Core/Asset/LibraryDiscovery.php
+++ b/core/lib/Drupal/Core/Asset/LibraryDiscovery.php
@@ -7,15 +7,14 @@
 
 namespace Drupal\Core\Asset;
 
+use Drupal\Component\Serialization\Yaml;
+use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
 use Drupal\Core\Asset\Exception\IncompleteLibraryDefinitionException;
 use Drupal\Core\Asset\Exception\InvalidLibraryFileException;
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Extension\ThemeHandlerInterface;
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Parser;
-
 
 /**
  * Discovers available asset libraries in Drupal.
@@ -299,12 +298,11 @@ protected function fileValidUri($source) {
    *   Thrown when a parser exception got thrown.
    */
   protected function parseLibraryInfo($extension, $library_file) {
-    $parser = new Parser();
     try {
-      $this->libraries[$extension] = $parser->parse(file_get_contents(DRUPAL_ROOT . '/' . $library_file));
+      $this->libraries[$extension] = Yaml::decode(file_get_contents(DRUPAL_ROOT . '/' . $library_file));
     }
-    catch (ParseException $e) {
-      // Rethrow a more helpful exception, since ParseException lacks context.
+    catch (InvalidDataTypeException $e) {
+      // Rethrow a more helpful exception to provide context.
       throw new InvalidLibraryFileException(sprintf('Invalid library definition in %s: %s', $library_file, $e->getMessage()), 0, $e);
     }
     // Allow modules to alter the module's registered libraries.
diff --git a/core/lib/Drupal/Core/Config/ConfigManager.php b/core/lib/Drupal/Core/Config/ConfigManager.php
index 6fd55c9..08e0c44 100644
--- a/core/lib/Drupal/Core/Config/ConfigManager.php
+++ b/core/lib/Drupal/Core/Config/ConfigManager.php
@@ -7,11 +7,11 @@
 
 namespace Drupal\Core\Config;
 
+use Drupal\Component\Serialization\Yaml;
 use Drupal\Core\Config\Entity\ConfigDependencyManager;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\StringTranslation\TranslationManager;
-use Symfony\Component\Yaml\Dumper;
 
 /**
  * The ConfigManager provides helper functions for the configuration system.
@@ -108,11 +108,8 @@ public function diff(StorageInterface $source_storage, StorageInterface $target_
     // The output should show configuration object differences formatted as YAML.
     // But the configuration is not necessarily stored in files. Therefore, they
     // need to be read and parsed, and lastly, dumped into YAML strings.
-    $dumper = new Dumper();
-    $dumper->setIndentation(2);
-
-    $source_data = explode("\n", $dumper->dump($source_storage->read($name), PHP_INT_MAX));
-    $target_data = explode("\n", $dumper->dump($target_storage->read($name), PHP_INT_MAX));
+    $source_data = explode("\n", Yaml::encode($source_storage->read($name)));
+    $target_data = explode("\n", Yaml::encode($target_storage->read($name)));
 
     // Check for new or removed files.
     if ($source_data === array('false')) {
diff --git a/core/lib/Drupal/Core/Config/FileStorage.php b/core/lib/Drupal/Core/Config/FileStorage.php
index 0b0466b..1dac0f4 100644
--- a/core/lib/Drupal/Core/Config/FileStorage.php
+++ b/core/lib/Drupal/Core/Config/FileStorage.php
@@ -7,10 +7,9 @@
 
 namespace Drupal\Core\Config;
 
+use Drupal\Component\Serialization\Yaml;
+use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
 use Drupal\Component\Utility\String;
-use Symfony\Component\Yaml\Dumper;
-use Symfony\Component\Yaml\Exception\DumpException;
-use Symfony\Component\Yaml\Parser;
 
 /**
  * Defines the file storage.
@@ -25,20 +24,6 @@ class FileStorage implements StorageInterface {
   protected $directory = '';
 
   /**
-   * A shared YAML dumper instance.
-   *
-   * @var \Symfony\Component\Yaml\Dumper
-   */
-  protected $dumper;
-
-  /**
-   * A shared YAML parser instance.
-   *
-   * @var \Symfony\Component\Yaml\Parser
-   */
-  protected $parser;
-
-  /**
    * Constructs a new FileStorage.
    *
    * @param string $directory
@@ -90,16 +75,22 @@ public function exists($name) {
   /**
    * Implements Drupal\Core\Config\StorageInterface::read().
    *
-   * @throws Symfony\Component\Yaml\Exception\ParseException
+   * @throws \Drupal\Core\Config\UnsupportedDataTypeConfigException
    */
   public function read($name) {
     if (!$this->exists($name)) {
       return FALSE;
     }
     $data = file_get_contents($this->getFilePath($name));
-    // @todo Yaml throws a ParseException on invalid data. Is it expected to be
-    //   caught or not?
-    $data = $this->decode($data);
+    try {
+      $data = $this->decode($data);
+    }
+    catch (InvalidDataTypeException $e) {
+      throw new UnsupportedDataTypeConfigException(String::format('Invalid data type in config @name: !message', array(
+        '@name' => $name,
+        '!message' => $e->getMessage(),
+      )));
+    }
     return $data;
   }
 
@@ -123,8 +114,11 @@ public function write($name, array $data) {
     try {
       $data = $this->encode($data);
     }
-    catch(DumpException $e) {
-      throw new StorageException(String::format('Invalid data type for used in config: @name', array('@name' => $name)));
+    catch (InvalidDataTypeException $e) {
+      throw new StorageException(String::format('Invalid data type in config @name: !message', array(
+        '@name' => $name,
+        '!message' => $e->getMessage(),
+      )));
     }
 
     $target = $this->getFilePath($name);
@@ -168,51 +162,17 @@ public function rename($name, $new_name) {
   }
 
   /**
-   * Gets the YAML dumper instance.
-   *
-   * @return Symfony\Component\Yaml\Dumper
-   */
-  protected function getDumper() {
-    if (!isset($this->dumper)) {
-      $this->dumper = new Dumper();
-      // Set Yaml\Dumper's default indentation for nested nodes/collections to
-      // 2 spaces for consistency with Drupal coding standards.
-      $this->dumper->setIndentation(2);
-    }
-    return $this->dumper;
-  }
-
-  /**
-   * Gets the YAML parser instance.
-   *
-   * @return Symfony\Component\Yaml\Parser
-   */
-  protected function getParser() {
-    if (!isset($this->parser)) {
-      $this->parser = new Parser();
-    }
-    return $this->parser;
-  }
-
-  /**
    * Implements Drupal\Core\Config\StorageInterface::encode().
-   *
-   * @throws Symfony\Component\Yaml\Exception\DumpException
    */
   public function encode($data) {
-    // The level where you switch to inline YAML is set to PHP_INT_MAX to ensure
-    // this does not occur. Also set the exceptionOnInvalidType parameter to
-    // TRUE, so exceptions are thrown for an invalid data type.
-    return $this->getDumper()->dump($data, PHP_INT_MAX, 0, TRUE);
+    return Yaml::encode($data);
   }
 
   /**
    * Implements Drupal\Core\Config\StorageInterface::decode().
-   *
-   * @throws Symfony\Component\Yaml\Exception\ParseException
    */
   public function decode($raw) {
-    $data = $this->getParser()->parse($raw);
+    $data = Yaml::decode($raw);
     // A simple string is valid YAML for any reason.
     if (!is_array($data)) {
       return FALSE;
diff --git a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
index cd7a17d..36300d4 100644
--- a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
+++ b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
@@ -7,12 +7,12 @@
 
 namespace Drupal\Core\DependencyInjection;
 
+use Drupal\Component\Serialization\Yaml;
 use Symfony\Component\DependencyInjection\Alias;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\DependencyInjection\Definition;
 use Symfony\Component\DependencyInjection\DefinitionDecorator;
 use Symfony\Component\DependencyInjection\Reference;
-use Symfony\Component\Yaml\Parser;
 
 /**
  * YamlFileLoader loads YAML files service definitions.
@@ -194,8 +194,7 @@ protected function parseDefinition($id, $service, $filename) {
    *   The file content.
    */
   protected function loadFile($filename) {
-    $parser = new Parser();
-    return $this->validate($parser->parse(file_get_contents($filename)), $filename);
+    return $this->validate(Yaml::decode(file_get_contents($filename)), $filename);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Extension/InfoParser.php b/core/lib/Drupal/Core/Extension/InfoParser.php
index 4a23ad8..de1b24a 100644
--- a/core/lib/Drupal/Core/Extension/InfoParser.php
+++ b/core/lib/Drupal/Core/Extension/InfoParser.php
@@ -7,9 +7,9 @@
 
 namespace Drupal\Core\Extension;
 
+use Drupal\Component\Serialization\Yaml;
+use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
 use Drupal\Component\Utility\String;
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Parser;
 
 /**
  * Parses extension .info.yml files.
@@ -24,13 +24,6 @@ class InfoParser implements InfoParserInterface {
   protected static $parsedInfos = array();
 
   /**
-   * Symfony YAML parser object.
-   *
-   * @var \Symfony\Component\Yaml\Parser
-   */
-  protected $parser;
-
-  /**
    * {@inheritdoc}
    */
   public function parse($filename) {
@@ -40,16 +33,16 @@ public function parse($filename) {
       }
       else {
         try {
-          static::$parsedInfos[$filename] = $this->getParser()->parse(file_get_contents($filename));
+          static::$parsedInfos[$filename] = Yaml::decode(file_get_contents($filename));
         }
-        catch (ParseException $e) {
-          $message = String::format("Unable to parse !file. Parser error !error.", array('!file' => $filename, '!error' => $e->getMessage()));
-          throw new InfoParserException($message, $filename);
+        catch (InvalidDataTypeException $e) {
+          $message = String::format("Unable to parse !file: !error", array('!file' => $filename, '!error' => $e->getMessage()));
+          throw new InfoParserException($message);
         }
         $missing_keys = array_diff($this->getRequiredKeys(), array_keys(static::$parsedInfos[$filename]));
         if (!empty($missing_keys)) {
           $message = format_plural(count($missing_keys), 'Missing required key (!missing_keys) in !file.', 'Missing required keys (!missing_keys) in !file.', array('!missing_keys' => implode(', ', $missing_keys), '!file' => $filename));
-          throw new InfoParserException($message, $filename);
+          throw new InfoParserException($message);
         }
         if (isset(static::$parsedInfos[$filename]['version']) && static::$parsedInfos[$filename]['version'] === 'VERSION') {
           static::$parsedInfos[$filename]['version'] = \Drupal::VERSION;
@@ -60,19 +53,6 @@ public function parse($filename) {
   }
 
   /**
-   * Returns a parser for parsing .info.yml files.
-   *
-   * @return \Symfony\Component\Yaml\Parser
-   *   Symfony YAML parser object.
-   */
-  protected function getParser() {
-    if (!$this->parser) {
-      $this->parser = new Parser();
-    }
-    return $this->parser;
-  }
-
-  /**
    * Returns an array of keys required to exist in .info.yml file.
    *
    * @return array
diff --git a/core/lib/Drupal/Core/Extension/InfoParserException.php b/core/lib/Drupal/Core/Extension/InfoParserException.php
index 2804bf6..df8071f 100644
--- a/core/lib/Drupal/Core/Extension/InfoParserException.php
+++ b/core/lib/Drupal/Core/Extension/InfoParserException.php
@@ -10,35 +10,4 @@
  * An exception thrown by the InfoParser class whilst parsing info.yml files.
  */
 class InfoParserException extends \RuntimeException {
-
-  /**
-   * The info.yml filename.
-   *
-   * @var string
-   */
-  protected $infoFilename;
-
-  /**
-   * Constructs the InfoParserException object.
-   *
-   * @param string $message
-   *   The Exception message to throw.
-   * @param string $filename
-   *   The info.yml filename.
-   */
-  public function __construct($message, $info_filename) {
-    $this->infoFilename = $info_filename;
-    parent::__construct($message);
-  }
-
-  /**
-   * Gets the info.yml filename.
-   *
-   * @return string
-   *   The info.yml filename.
-   */
-  public function getInfoFilename () {
-    return $this->infoFilename;
-  }
-
 }
diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php
index ac48c17..11a6eb7 100644
--- a/core/lib/Drupal/Core/Extension/ModuleHandler.php
+++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php
@@ -8,7 +8,7 @@
 namespace Drupal\Core\Extension;
 
 use Drupal\Component\Graph\Graph;
-use Symfony\Component\Yaml\Parser;
+use Drupal\Component\Serialization\Yaml;
 use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -837,8 +837,7 @@ protected function removeCacheBins($module) {
     // Remove any cache bins defined by a module.
     $service_yaml_file = drupal_get_path('module', $module) . "/$module.services.yml";
     if (file_exists($service_yaml_file)) {
-      $parser = new Parser;
-      $definitions = $parser->parse(file_get_contents($service_yaml_file));
+      $definitions = Yaml::decode(file_get_contents($service_yaml_file));
       if (isset($definitions['services'])) {
         foreach ($definitions['services'] as $id => $definition) {
           if (isset($definition['tags'])) {
diff --git a/core/modules/config/lib/Drupal/config/Controller/ConfigController.php b/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
index c79b8cb..3c329db 100644
--- a/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
+++ b/core/modules/config/lib/Drupal/config/Controller/ConfigController.php
@@ -8,11 +8,11 @@
 namespace Drupal\config\Controller;
 
 use Drupal\Component\Archiver\ArchiveTar;
+use Drupal\Component\Serialization\Yaml;
 use Drupal\Core\Config\ConfigManagerInterface;
 use Drupal\Core\Config\StorageInterface;
 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
 use Drupal\system\FileDownloadController;
-use Symfony\Component\Yaml\Dumper;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
 
@@ -84,12 +84,9 @@ public function __construct(StorageInterface $target_storage, StorageInterface $
   public function downloadExport() {
     file_unmanaged_delete(file_directory_temp() . '/config.tar.gz');
 
-    $dumper = new Dumper();
-    $dumper->setIndentation(2);
-
     $archiver = new ArchiveTar(file_directory_temp() . '/config.tar.gz', 'gz');
     foreach (\Drupal::service('config.storage')->listAll() as $name) {
-      $archiver->addString("$name.yml", $dumper->dump(\Drupal::config($name)->get(), PHP_INT_MAX, 0, TRUE));
+      $archiver->addString("$name.yml", Yaml::encode(\Drupal::config($name)->get()));
     }
 
     $request = new Request(array('file' => 'config.tar.gz'));
diff --git a/core/modules/config/lib/Drupal/config/Form/ConfigSingleExportForm.php b/core/modules/config/lib/Drupal/config/Form/ConfigSingleExportForm.php
index cdb76cc..14255b5 100644
--- a/core/modules/config/lib/Drupal/config/Form/ConfigSingleExportForm.php
+++ b/core/modules/config/lib/Drupal/config/Form/ConfigSingleExportForm.php
@@ -7,12 +7,12 @@
 
 namespace Drupal\config\Form;
 
+use Drupal\Component\Serialization\Yaml;
 use Drupal\Core\Config\StorageInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Form\FormBase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\Yaml\Dumper;
 
 /**
  * Provides a form for exporting a single configuration file.
@@ -34,13 +34,6 @@ class ConfigSingleExportForm extends FormBase {
   protected $configStorage;
 
   /**
-   * The YAML dumper.
-   *
-   * @var \Symfony\Component\Yaml\Dumper
-   */
-  protected $dumper;
-
-  /**
    * Tracks the valid config entity type definitions.
    *
    * @var \Drupal\Core\Entity\EntityTypeInterface[]
@@ -54,14 +47,10 @@ class ConfigSingleExportForm extends FormBase {
    *   The entity manager.
    * @param \Drupal\Core\Config\StorageInterface $config_storage
    *   The config storage.
-   * @param \Symfony\Component\Yaml\Dumper $dumper
-   *   The yaml dumper.
    */
-  public function __construct(EntityManagerInterface $entity_manager, StorageInterface $config_storage, Dumper $dumper) {
+  public function __construct(EntityManagerInterface $entity_manager, StorageInterface $config_storage) {
     $this->entityManager = $entity_manager;
     $this->configStorage = $config_storage;
-    $this->dumper = $dumper;
-    $this->dumper->setIndentation(2);
   }
 
   /**
@@ -70,8 +59,7 @@ public function __construct(EntityManagerInterface $entity_manager, StorageInter
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('entity.manager'),
-      $container->get('config.storage'),
-      new Dumper()
+      $container->get('config.storage')
     );
   }
 
@@ -164,7 +152,7 @@ public function updateExport($form, &$form_state) {
       $name = $form_state['values']['config_name'];
     }
     // Read the raw data for this config name, encode it, and display it.
-    $form['export']['#value'] = $this->dumper->dump($this->configStorage->read($name), PHP_INT_MAX);
+    $form['export']['#value'] = Yaml::encode($this->configStorage->read($name));
     $form['export']['#description'] = $this->t('The filename is %name.', array('%name' => $name . '.yml'));
     return $form['export'];
   }
diff --git a/core/modules/config/lib/Drupal/config/Form/ConfigSingleImportForm.php b/core/modules/config/lib/Drupal/config/Form/ConfigSingleImportForm.php
index e20afde..80bf8c4 100644
--- a/core/modules/config/lib/Drupal/config/Form/ConfigSingleImportForm.php
+++ b/core/modules/config/lib/Drupal/config/Form/ConfigSingleImportForm.php
@@ -7,11 +7,11 @@
 
 namespace Drupal\config\Form;
 
+use Drupal\Component\Serialization\Yaml;
 use Drupal\Core\Config\StorageInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Form\ConfirmFormBase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
-use Symfony\Component\Yaml\Yaml;
 
 /**
  * Provides a form for importing a single configuration file.
@@ -33,13 +33,6 @@ class ConfigSingleImportForm extends ConfirmFormBase {
   protected $configStorage;
 
   /**
-   * The YAML component.
-   *
-   * @var \Symfony\Component\Yaml\Yaml
-   */
-  protected $yaml;
-
-  /**
    * If the config exists, this is that object. Otherwise, FALSE.
    *
    * @var \Drupal\Core\Config\Config|\Drupal\Core\Config\Entity\ConfigEntityInterface|bool
@@ -60,13 +53,10 @@ class ConfigSingleImportForm extends ConfirmFormBase {
    *   The entity manager.
    * @param \Drupal\Core\Config\StorageInterface $config_storage
    *   The config storage.
-   * @param \Symfony\Component\Yaml\Yaml $yaml
-   *   The YAML component.
    */
-  public function __construct(EntityManagerInterface $entity_manager, StorageInterface $config_storage, Yaml $yaml) {
+  public function __construct(EntityManagerInterface $entity_manager, StorageInterface $config_storage) {
     $this->entityManager = $entity_manager;
     $this->configStorage = $config_storage;
-    $this->yaml = $yaml;
   }
 
   /**
@@ -75,8 +65,7 @@ public function __construct(EntityManagerInterface $entity_manager, StorageInter
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('entity.manager'),
-      $container->get('config.storage'),
-      new Yaml()
+      $container->get('config.storage')
     );
   }
 
@@ -196,7 +185,7 @@ public function validateForm(array &$form, array &$form_state) {
     }
 
     // Decode the submitted import.
-    $data = $this->yaml->parse($form_state['values']['import']);
+    $data = Yaml::decode($form_state['values']['import']);
 
     // Validate for config entities.
     if ($form_state['values']['config_type'] !== 'system.simple') {
diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigSingleImportExportTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigSingleImportExportTest.php
index b131d8a..7eb4bff 100644
--- a/core/modules/config/lib/Drupal/config/Tests/ConfigSingleImportExportTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/ConfigSingleImportExportTest.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\config\Tests;
 
+use Drupal\Component\Serialization\Yaml;
 use Drupal\simpletest\WebTestBase;
-use Symfony\Component\Yaml\Dumper;
 
 /**
  * Tests the user interface for importing/exporting a single configuration.
@@ -22,13 +22,6 @@ class ConfigSingleImportExportTest extends WebTestBase {
    */
   public static $modules = array('config', 'config_test');
 
-  /**
-   * The YAML dumper.
-   *
-   * @var \Symfony\Component\Yaml\Dumper
-   */
-  protected $dumper;
-
   public static function getInfo() {
     return array(
       'name' => 'Configuration Single Import/Export UI',
@@ -38,15 +31,6 @@ public static function getInfo() {
   }
 
   /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->dumper = new Dumper();
-    $this->dumper->setIndentation(2);
-  }
-
-  /**
    * Tests importing a single configuration file.
    */
   public function testImport() {
@@ -131,7 +115,7 @@ public function testImportSimpleConfiguration() {
     $edit = array(
       'config_type' => 'system.simple',
       'config_name' => $config->getName(),
-      'import' => $this->dumper->dump($config->get(), PHP_INT_MAX),
+      'import' => Yaml::encode($config->get()),
     );
     $this->drupalPostForm('admin/config/development/configuration/single/import', $edit, t('Import'));
     $this->assertRaw(t('Are you sure you want to update the %name @type?', array('%name' => $config->getName(), '@type' => 'simple configuration')));
@@ -167,7 +151,7 @@ public function testExport() {
     $this->assertFieldByXPath('//select[@name="config_name"]//option[@selected="selected"]', t('Fallback date format'), 'The fallback date format config entity is selected when specified in the URL.');
 
     $fallback_date = \Drupal::entityManager()->getStorage('date_format')->load('fallback');
-    $data = $this->dumper->dump($fallback_date->toArray(), PHP_INT_MAX);
+    $data = Yaml::encode($fallback_date->toArray());
     $this->assertFieldByXPath('//textarea[@name="export"]', $data, 'The fallback date format config entity export code is displayed.');
   }
 
diff --git a/core/modules/config/lib/Drupal/config/Tests/Storage/ConfigStorageTestBase.php b/core/modules/config/lib/Drupal/config/Tests/Storage/ConfigStorageTestBase.php
index cef916b..925ecbd 100644
--- a/core/modules/config/lib/Drupal/config/Tests/Storage/ConfigStorageTestBase.php
+++ b/core/modules/config/lib/Drupal/config/Tests/Storage/ConfigStorageTestBase.php
@@ -27,7 +27,6 @@
    * Tests storage CRUD operations.
    *
    * @todo Coverage: Trigger PDOExceptions / Database exceptions.
-   * @todo Coverage: Trigger Yaml's ParseException and DumpException.
    */
   function testCRUD() {
     $name = 'config_test.storage';
diff --git a/core/modules/config/lib/Drupal/config/Tests/Storage/FileStorageTest.php b/core/modules/config/lib/Drupal/config/Tests/Storage/FileStorageTest.php
index 96bdb42..5b72508 100644
--- a/core/modules/config/lib/Drupal/config/Tests/Storage/FileStorageTest.php
+++ b/core/modules/config/lib/Drupal/config/Tests/Storage/FileStorageTest.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\config\Tests\Storage;
 
+use Drupal\Component\Serialization\Yaml;
 use Drupal\Core\Config\FileStorage;
-use Symfony\Component\Yaml\Yaml;
 
 /**
  * Tests FileStorage operations.
@@ -34,7 +34,7 @@ function setUp() {
 
   protected function read($name) {
     $data = file_get_contents($this->storage->getFilePath($name));
-    return Yaml::parse($data);
+    return Yaml::decode($data);
   }
 
   protected function insert($name, $data) {
diff --git a/core/modules/menu_link/lib/Drupal/menu_link/StaticMenuLinks.php b/core/modules/menu_link/lib/Drupal/menu_link/StaticMenuLinks.php
index 5e8e1ce..fbbac4a 100644
--- a/core/modules/menu_link/lib/Drupal/menu_link/StaticMenuLinks.php
+++ b/core/modules/menu_link/lib/Drupal/menu_link/StaticMenuLinks.php
@@ -6,6 +6,7 @@
  */
 
 namespace Drupal\menu_link;
+
 use Drupal\Component\Discovery\YamlDiscovery;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Installer/DistributionProfileTest.php b/core/modules/system/lib/Drupal/system/Tests/Installer/DistributionProfileTest.php
index 4e3ae04..b82e7ec 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Installer/DistributionProfileTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Installer/DistributionProfileTest.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\system\Tests\Installer;
 
+use Drupal\Component\Serialization\Yaml;
 use Drupal\simpletest\InstallerTestBase;
-use Symfony\Component\Yaml\Yaml;
 
 /**
  * Tests the installer translation detection.
@@ -45,7 +45,7 @@ protected function setUp() {
     // File API functions are not available yet.
     $path = $this->siteDirectory . '/profiles/mydistro';
     mkdir($path, 0777, TRUE);
-    file_put_contents("$path/mydistro.info.yml", Yaml::dump($this->info, PHP_INT_MAX, 2));
+    file_put_contents("$path/mydistro.info.yml", Yaml::encode($this->info));
     file_put_contents("$path/mydistro.profile", "<?php\n");
 
     parent::setUp();
