diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php
index bc6afef..25fa828 100644
--- a/core/lib/Drupal/Core/CoreBundle.php
+++ b/core/lib/Drupal/Core/CoreBundle.php
@@ -255,6 +255,11 @@ public function build(ContainerBuilder $container) {
     $container->register('serializer.normalizer.typed_data', 'Drupal\Core\Serialization\TypedDataNormalizer')->addTag('normalizer');
     $container->register('serializer.encoder.json', 'Drupal\Core\Serialization\JsonEncoder')->addTag('encoder');
     $container->register('serializer.encoder.xml', 'Drupal\Core\Serialization\XmlEncoder')->addTag('encoder');
+    $container->register('serializer.encoder.yaml', 'Drupal\Core\Serialization\YamlEncoder')->addTag('encoder');
+
+    // Register any additional content types on the request service.
+    $container->register('serializer_format_subscriber', 'Drupal\Core\Serialization\SerializerFormatSubscriber')
+      ->addTag('event_subscriber');
 
     $container->register('flood', 'Drupal\Core\Flood\DatabaseBackend')
       ->addArgument(new Reference('database'));
diff --git a/core/lib/Drupal/Core/Serialization/SerializerFormatSubscriber.php b/core/lib/Drupal/Core/Serialization/SerializerFormatSubscriber.php
new file mode 100644
index 0000000..28f8b01
--- /dev/null
+++ b/core/lib/Drupal/Core/Serialization/SerializerFormatSubscriber.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\Serialization\SerializerFormatSubscriber.
+ */
+
+namespace Drupal\Core\Serialization;
+
+use Symfony\Component\HttpKernel\KernelEvents;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
+use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Event subscriber for adding additional content types to the request.
+ */
+class SerializerFormatSubscriber implements EventSubscriberInterface {
+
+  /**
+   * Register content type formats on the request object.
+   *
+   * @param Symfony\Component\HttpKernel\Event\GetResponseEvent $event
+   *   The Event to process.
+   */
+  public function onKernelRequest(GetResponseEvent $event) {
+    $event->getRequest()->setFormat('yaml', array('application/x-yaml', 'text/yaml'));
+  }
+
+  /**
+   * Implements \Symfony\Component\EventDispatcher\EventSubscriberInterface::getSubscribedEvents().
+   */
+  static function getSubscribedEvents() {
+    $events[KernelEvents::REQUEST][] = array('onKernelRequest', 30);
+    return $events;
+  }
+}
diff --git a/core/lib/Drupal/Core/Serialization/YamlEncoder.php b/core/lib/Drupal/Core/Serialization/YamlEncoder.php
new file mode 100644
index 0000000..a4f533f
--- /dev/null
+++ b/core/lib/Drupal/Core/Serialization/YamlEncoder.php
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Serialization\YamlEncoder.
+ */
+
+namespace Drupal\Core\Serialization;
+
+use Symfony\Component\Serializer\Encoder\EncoderInterface;
+use Symfony\Component\Serializer\Encoder\DecoderInterface;
+use Symfony\Component\Serializer\Encoder\SerializerAwareEncoder;
+use Symfony\Component\Yaml\Dumper;
+use Symfony\Component\Yaml\Parser;
+
+/**
+ * Adds YAML support for serializer.
+ *
+ */
+class YamlEncoder extends SerializerAwareEncoder implements EncoderInterface, DecoderInterface {
+
+  /**
+   * The formats that this Encoder supports.
+   *
+   * @var array
+   */
+  static protected $format = array('yaml');
+
+  /**
+   * A shared YAML dumper instance.
+   *
+   * @var Symfony\Component\Yaml\Dumper
+   */
+  protected $dumper;
+
+  /**
+   * A shared YAML parser instance.
+   *
+   * @var Symfony\Component\Yaml\Parser
+   */
+  protected $parser;
+
+  /**
+   * Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::encode().
+   */
+  public function encode($data, $format, array $context = array()){
+    return $this->getDumper()->dump($data, PHP_INT_MAX);
+  }
+
+  /**
+   * Implements \Symfony\Component\Serializer\Encoder\JsonEncoder::supportsEncoding().
+   */
+  public function supportsEncoding($format) {
+    return in_array($format, static::$format);
+  }
+
+  /**
+   * Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::decode().
+   */
+  public function decode($data, $format, array $context = array()){
+    return $this->getParser()->parse($data);
+  }
+
+  /**
+   * Implements \Symfony\Component\Serializer\Encoder\JsonEncoder::supportsDecoding().
+   */
+  public function supportsDecoding($format) {
+    return in_array($format, static::$format);
+  }
+
+  /**
+   * 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;
+  }
+
+}
