diff --git a/core/composer.json b/core/composer.json
new file mode 100644
index 0000000..de92847
--- /dev/null
+++ b/core/composer.json
@@ -0,0 +1,14 @@
+{
+    "require": {
+        "symfony/event-dispatcher": "2.0.10",
+        "symfony/http-foundation": "2.0.10",
+        "symfony/http-kernel": "2.0.10",
+        "symfony/routing": "2.0.10"
+    },
+    "autoload": {
+        "psr-0": {
+            "Drupal\\Core": "lib/",
+            "Drupal\\Component": "lib/"
+        }
+    }
+}
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 2664a42..f1aecac 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -2133,23 +2133,7 @@ function _drupal_bootstrap_configuration() {
   drupal_settings_initialize();
 
   // Include and activate the class loader.
-  $loader = drupal_classloader();
-
-  // Register explicit vendor namespaces.
-  $loader->registerNamespaces(array(
-    // All Symfony-borrowed code lives in /core/vendor/Symfony.
-    'Symfony' => DRUPAL_ROOT . '/core/vendor',
-  ));
-  // Register the Drupal namespace for classes in core as a fallback.
-  // This allows to register additional namespaces within the Drupal namespace
-  // (e.g., for modules) and avoids an additional file_exists() on the Drupal
-  // core namespace, since the class loader can already determine the best
-  // namespace match based on a string comparison. It further allows modules to
-  // register/overload namespaces in Drupal core.
-  $loader->registerNamespaceFallbacks(array(
-    // All Drupal-namespaced code in core lives in /core/lib/Drupal.
-    'Drupal' => DRUPAL_ROOT . '/core/lib',
-  ));
+  drupal_classloader();
 }
 
 /**
@@ -2857,41 +2841,33 @@ function drupal_get_complete_schema($rebuild = FALSE) {
  * Initializes and returns the class loader.
  *
  * The class loader is responsible for lazy-loading all PSR-0 compatible
- * classes, interfaces, and traits (PHP 5.4 and later). Its only dependencies
- * are DRUPAL_ROOT and variable_get(). Otherwise it may be called as early as
- * possible.
+ * classes, interfaces, and traits (PHP 5.4 and later). Its only dependency is
+ * DRUPAL_ROOT, otherwise it may be called as early as possible. Calling this
+ * function will register Drupal\Core, Drupal\Components and Symfony's provided
+ * components.
+ *
+ * Example:
+ * @code
+ * // Register MyModule's PSR-0 class namespace.
+ * $loader = drupal_classloader();
+ * $path = drupal_get_path('module', 'mymodule') . '/lib/';
+ * $loader->add("Drupal\\MyModule", $path);
+ * @endcode
  *
- * @return Symfony\Component\ClassLoader\UniversalClassLoader
- *   A UniversalClassLoader class instance (or extension thereof).
+ * @return Composer\Autoload\ClassLoader
+ *   Returns the ClassLoader object that was used to register the initial
+ *   namespaces. This allows registration of additional namespaces later on.
  */
 function drupal_classloader() {
-  // Include the Symfony ClassLoader for loading PSR-0-compatible classes.
-  require_once DRUPAL_ROOT . '/core/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php';
-
-  // By default, use the UniversalClassLoader which is best for development,
-  // as it does not break when code is moved on the file system. However, as it
-  // is slow, allow to use the APC class loader in production.
   static $loader;
 
   if (!isset($loader)) {
-    // @todo Use a cleaner way than variable_get() to switch autoloaders.
-    switch (variable_get('autoloader_mode', 'default')) {
-      case 'apc':
-        if (function_exists('apc_store')) {
-          require_once DRUPAL_ROOT . '/core/vendor/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php';
-          $loader = new ApcUniversalClassLoader('drupal.' . $GLOBALS['drupal_hash_salt']);
-          break;
-        }
-      // Fall through to the default loader if APC was not loaded, so that the
-      // site does not fail completely.
-      case 'dev':
-      case 'default':
-      default:
-        $loader = new UniversalClassLoader();
-        break;
-    }
-    $loader->register();
+    // Drupal Core's classes are auto-loaded by autoload.php. The ClassLoader
+    // instance used to register the initial namespaces is returned. This file
+    // is auto-generated by Composer during the build process of composer.json.
+    $loader = require DRUPAL_ROOT . '/core/vendor/.composer/autoload.php';
   }
+
   return $loader;
 }
 
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 493246c..707ba50 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -229,23 +229,7 @@ function install_begin_request(&$install_state) {
 
   // Ensure that the class loader is available so that we can leverage classes
   // as part of the install routine.
-  $loader = drupal_classloader();
-
-  // Register explicit vendor namespaces.
-  $loader->registerNamespaces(array(
-    // All Symfony-borrowed code lives in /core/includes/Symfony.
-    'Symfony' => DRUPAL_ROOT . '/core/vendor',
-  ));
-  // Register the Drupal namespace for classes in core as a fallback.
-  // This allows to register additional namespaces within the Drupal namespace
-  // (e.g., for modules) and avoids an additional file_exists() on the Drupal
-  // core namespace, since the class loader can already determine the best
-  // namespace match based on a string comparison. It further allows modules to
-  // register/overload namespaces in Drupal core.
-  $loader->registerNamespaceFallbacks(array(
-    // All Drupal-namespaced code in core lives in /core/includes/Drupal.
-    'Drupal' => DRUPAL_ROOT . '/core/lib',
-  ));
+  drupal_classloader();
 
   if (!$install_state['interactive']) {
     drupal_override_server_variables($install_state['server']);
diff --git a/core/vendor/.composer/ClassLoader.php b/core/vendor/.composer/ClassLoader.php
new file mode 100644
index 0000000..94fc76a
--- /dev/null
+++ b/core/vendor/.composer/ClassLoader.php
@@ -0,0 +1,203 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements an PSR-0 class loader
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ *
+ *     $loader = new ComposerClassLoader();
+ *
+ *     // register classes with namespaces
+ *     $loader->add('Symfony\Component', __DIR__.'/component');
+ *     $loader->add('Symfony',           __DIR__.'/framework');
+ *
+ *     // activate the autoloader
+ *     $loader->register();
+ *
+ *     // to enable searching the include path (eg. for PEAR packages)
+ *     $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class ClassLoader
+{
+    private $prefixes = array();
+    private $fallbackDirs = array();
+    private $useIncludePath = false;
+    private $classMap = array();
+
+    public function getPrefixes()
+    {
+        return $this->prefixes;
+    }
+
+    public function getFallbackDirs()
+    {
+        return $this->fallbackDirs;
+    }
+
+    public function getClassMap()
+    {
+        return $this->classMap;
+    }
+
+    /**
+     * @param array $classMap Class to filename map
+     */
+    public function addClassMap(array $classMap)
+    {
+        if ($this->classMap) {
+            $this->classMap = array_merge($this->classMap, $classMap);
+        } else {
+            $this->classMap = $classMap;
+        }
+    }
+
+    /**
+     * Registers a set of classes
+     *
+     * @param string       $prefix  The classes prefix
+     * @param array|string $paths   The location(s) of the classes
+     */
+    public function add($prefix, $paths)
+    {
+        if (!$prefix) {
+            foreach ((array) $paths as $path) {
+                $this->fallbackDirs[] = $path;
+            }
+            return;
+        }
+        if (isset($this->prefixes[$prefix])) {
+            $this->prefixes[$prefix] = array_merge(
+                $this->prefixes[$prefix],
+                (array) $paths
+            );
+        } else {
+            $this->prefixes[$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Turns on searching the include for class files.
+     *
+     * @param Boolean $useIncludePath
+     */
+    public function setUseIncludePath($useIncludePath)
+    {
+        $this->useIncludePath = $useIncludePath;
+    }
+
+    /**
+     * Can be used to check if the autoloader uses the include path to check
+     * for classes.
+     *
+     * @return Boolean
+     */
+    public function getUseIncludePath()
+    {
+        return $this->useIncludePath;
+    }
+
+    /**
+     * Registers this instance as an autoloader.
+     *
+     * @param Boolean $prepend Whether to prepend the autoloader or not
+     */
+    public function register($prepend = false)
+    {
+        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+    }
+
+    /**
+     * Unregisters this instance as an autoloader.
+     */
+    public function unregister()
+    {
+        spl_autoload_unregister(array($this, 'loadClass'));
+    }
+
+    /**
+     * Loads the given class or interface.
+     *
+     * @param string $class The name of the class
+     * @return Boolean|null True, if loaded
+     */
+    public function loadClass($class)
+    {
+        if ($file = $this->findFile($class)) {
+            require $file;
+            return true;
+        }
+    }
+
+    /**
+     * Finds the path to the file where the class is defined.
+     *
+     * @param string $class The name of the class
+     *
+     * @return string|null The path, if found
+     */
+    public function findFile($class)
+    {
+        if (isset($this->classMap[$class])) {
+            return $this->classMap[$class];
+        }
+
+        if ('\\' == $class[0]) {
+            $class = substr($class, 1);
+        }
+
+        if (false !== $pos = strrpos($class, '\\')) {
+            // namespaced class name
+            $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)) . DIRECTORY_SEPARATOR;
+            $className = substr($class, $pos + 1);
+        } else {
+            // PEAR-like class name
+            $classPath = null;
+            $className = $class;
+        }
+
+        $classPath .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
+
+        foreach ($this->prefixes as $prefix => $dirs) {
+            foreach ($dirs as $dir) {
+                if (0 === strpos($class, $prefix)) {
+                    if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) {
+                        return $dir . DIRECTORY_SEPARATOR . $classPath;
+                    }
+                }
+            }
+        }
+
+        foreach ($this->fallbackDirs as $dir) {
+            if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) {
+                return $dir . DIRECTORY_SEPARATOR . $classPath;
+            }
+        }
+
+        if ($this->useIncludePath && $file = stream_resolve_include_path($classPath)) {
+            return $file;
+        }
+    }
+}
diff --git a/core/vendor/.composer/autoload.php b/core/vendor/.composer/autoload.php
new file mode 100644
index 0000000..1427f02
--- /dev/null
+++ b/core/vendor/.composer/autoload.php
@@ -0,0 +1,25 @@
+<?php
+
+// autoload.php generated by Composer
+if (!class_exists('Composer\\Autoload\\ClassLoader', false)) {
+    require __DIR__.'/ClassLoader.php';
+}
+
+return call_user_func(function() {
+    $loader = new \Composer\Autoload\ClassLoader();
+
+    $map = require __DIR__.'/autoload_namespaces.php';
+
+    foreach ($map as $namespace => $path) {
+        $loader->add($namespace, $path);
+    }
+
+    $classMap = require __DIR__.'/autoload_classmap.php';
+    if ($classMap) {
+        $loader->addClassMap($classMap);
+    }
+
+    $loader->register();
+
+    return $loader;
+});
diff --git a/core/vendor/.composer/autoload_classmap.php b/core/vendor/.composer/autoload_classmap.php
new file mode 100644
index 0000000..4a9177d
--- /dev/null
+++ b/core/vendor/.composer/autoload_classmap.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_classmap.php generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/core/vendor/.composer/autoload_namespaces.php b/core/vendor/.composer/autoload_namespaces.php
new file mode 100644
index 0000000..c6ecf53
--- /dev/null
+++ b/core/vendor/.composer/autoload_namespaces.php
@@ -0,0 +1,15 @@
+<?php
+
+// autoload_namespace.php generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+    'Symfony\\Component\\Routing' => $vendorDir . '/symfony/routing/',
+    'Symfony\\Component\\HttpKernel' => $vendorDir . '/symfony/http-kernel/',
+    'Symfony\\Component\\HttpFoundation' => $vendorDir . '/symfony/http-foundation/',
+    'Symfony\\Component\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/',
+    'Drupal\\Core' => $baseDir . '/lib/',
+    'Drupal\\Component' => $baseDir . '/lib/',
+);
diff --git a/core/vendor/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php b/core/vendor/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php
deleted file mode 100644
index 1295d0a..0000000
--- a/core/vendor/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ClassLoader;
-
-/**
- * ApcUniversalClassLoader implements a "universal" autoloader cached in APC for PHP 5.3.
- *
- * It is able to load classes that use either:
- *
- *  * The technical interoperability standards for PHP 5.3 namespaces and
- *    class names (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md);
- *
- *  * The PEAR naming convention for classes (http://pear.php.net/).
- *
- * Classes from a sub-namespace or a sub-hierarchy of PEAR classes can be
- * looked for in a list of locations to ease the vendoring of a sub-set of
- * classes for large projects.
- *
- * Example usage:
- *
- *     require 'vendor/symfony/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';
- *     require 'vendor/symfony/src/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php';
- *
- *     use Symfony\Component\ClassLoader\ApcUniversalClassLoader;
- *
- *     $loader = new ApcUniversalClassLoader('apc.prefix.');
- *
- *     // register classes with namespaces
- *     $loader->registerNamespaces(array(
- *         'Symfony\Component' => __DIR__.'/component',
- *         'Symfony'           => __DIR__.'/framework',
- *         'Sensio'            => array(__DIR__.'/src', __DIR__.'/vendor'),
- *     ));
- *
- *     // register a library using the PEAR naming convention
- *     $loader->registerPrefixes(array(
- *         'Swift_' => __DIR__.'/Swift',
- *     ));
- *
- *     // activate the autoloader
- *     $loader->register();
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Kris Wallsmith <kris@symfony.com>
- *
- * @api
- */
-class ApcUniversalClassLoader extends UniversalClassLoader
-{
-    private $prefix;
-
-    /**
-     * Constructor.
-     *
-     * @param string $prefix A prefix to create a namespace in APC
-     *
-     * @api
-     */
-    public function __construct($prefix)
-    {
-        if (!extension_loaded('apc')) {
-            throw new \RuntimeException('Unable to use ApcUniversalClassLoader as APC is not enabled.');
-        }
-
-        $this->prefix = $prefix;
-    }
-
-    /**
-     * Finds a file by class name while caching lookups to APC.
-     *
-     * @param string $class A class name to resolve to file
-     */
-    public function findFile($class)
-    {
-        if (false === $file = apc_fetch($this->prefix.$class)) {
-            apc_store($this->prefix.$class, $file = parent::findFile($class));
-        }
-
-        return $file;
-    }
-}
diff --git a/core/vendor/Symfony/Component/ClassLoader/ClassCollectionLoader.php b/core/vendor/Symfony/Component/ClassLoader/ClassCollectionLoader.php
deleted file mode 100644
index da777f2..0000000
--- a/core/vendor/Symfony/Component/ClassLoader/ClassCollectionLoader.php
+++ /dev/null
@@ -1,222 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ClassLoader;
-
-/**
- * ClassCollectionLoader.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class ClassCollectionLoader
-{
-    static private $loaded;
-
-    /**
-     * Loads a list of classes and caches them in one big file.
-     *
-     * @param array   $classes    An array of classes to load
-     * @param string  $cacheDir   A cache directory
-     * @param string  $name       The cache name prefix
-     * @param Boolean $autoReload Whether to flush the cache when the cache is stale or not
-     * @param Boolean $adaptive   Whether to remove already declared classes or not
-     * @param string  $extension  File extension of the resulting file
-     *
-     * @throws \InvalidArgumentException When class can't be loaded
-     */
-    static public function load($classes, $cacheDir, $name, $autoReload, $adaptive = false, $extension = '.php')
-    {
-        // each $name can only be loaded once per PHP process
-        if (isset(self::$loaded[$name])) {
-            return;
-        }
-
-        self::$loaded[$name] = true;
-
-        if ($adaptive) {
-            // don't include already declared classes
-            $classes = array_diff($classes, get_declared_classes(), get_declared_interfaces());
-
-            // the cache is different depending on which classes are already declared
-            $name = $name.'-'.substr(md5(implode('|', $classes)), 0, 5);
-        }
-
-        $cache = $cacheDir.'/'.$name.$extension;
-
-        // auto-reload
-        $reload = false;
-        if ($autoReload) {
-            $metadata = $cacheDir.'/'.$name.$extension.'.meta';
-            if (!file_exists($metadata) || !file_exists($cache)) {
-                $reload = true;
-            } else {
-                $time = filemtime($cache);
-                $meta = unserialize(file_get_contents($metadata));
-
-                if ($meta[1] != $classes) {
-                    $reload = true;
-                } else {
-                    foreach ($meta[0] as $resource) {
-                        if (!file_exists($resource) || filemtime($resource) > $time) {
-                            $reload = true;
-
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (!$reload && file_exists($cache)) {
-            require_once $cache;
-
-            return;
-        }
-
-        $files = array();
-        $content = '';
-        foreach ($classes as $class) {
-            if (!class_exists($class) && !interface_exists($class) && (!function_exists('trait_exists') || !trait_exists($class))) {
-                throw new \InvalidArgumentException(sprintf('Unable to load class "%s"', $class));
-            }
-
-            $r = new \ReflectionClass($class);
-            $files[] = $r->getFileName();
-
-            $c = preg_replace(array('/^\s*<\?php/', '/\?>\s*$/'), '', file_get_contents($r->getFileName()));
-
-            // add namespace declaration for global code
-            if (!$r->inNamespace()) {
-                $c = "\nnamespace\n{\n".self::stripComments($c)."\n}\n";
-            } else {
-                $c = self::fixNamespaceDeclarations('<?php '.$c);
-                $c = preg_replace('/^\s*<\?php/', '', $c);
-            }
-
-            $content .= $c;
-        }
-
-        // cache the core classes
-        if (!is_dir(dirname($cache))) {
-            mkdir(dirname($cache), 0777, true);
-        }
-        self::writeCacheFile($cache, '<?php '.$content);
-
-        if ($autoReload) {
-            // save the resources
-            self::writeCacheFile($metadata, serialize(array($files, $classes)));
-        }
-    }
-
-    /**
-     * Adds brackets around each namespace if it's not already the case.
-     *
-     * @param string $source Namespace string
-     *
-     * @return string Namespaces with brackets
-     */
-    static public function fixNamespaceDeclarations($source)
-    {
-        if (!function_exists('token_get_all')) {
-            return $source;
-        }
-
-        $output = '';
-        $inNamespace = false;
-        $tokens = token_get_all($source);
-
-        for ($i = 0, $max = count($tokens); $i < $max; $i++) {
-            $token = $tokens[$i];
-            if (is_string($token)) {
-                $output .= $token;
-            } elseif (in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) {
-                // strip comments
-                continue;
-            } elseif (T_NAMESPACE === $token[0]) {
-                if ($inNamespace) {
-                    $output .= "}\n";
-                }
-                $output .= $token[1];
-
-                // namespace name and whitespaces
-                while (($t = $tokens[++$i]) && is_array($t) && in_array($t[0], array(T_WHITESPACE, T_NS_SEPARATOR, T_STRING))) {
-                    $output .= $t[1];
-                }
-                if (is_string($t) && '{' === $t) {
-                    $inNamespace = false;
-                    --$i;
-                } else {
-                    $output .= "\n{";
-                    $inNamespace = true;
-                }
-            } else {
-                $output .= $token[1];
-            }
-        }
-
-        if ($inNamespace) {
-            $output .= "}\n";
-        }
-
-        return $output;
-    }
-
-    /**
-     * Writes a cache file.
-     *
-     * @param string $file Filename
-     * @param string $content Temporary file content
-     *
-     * @throws \RuntimeException when a cache file cannot be written
-     */
-    static private function writeCacheFile($file, $content)
-    {
-        $tmpFile = tempnam(dirname($file), basename($file));
-        if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $file)) {
-            chmod($file, 0644);
-
-            return;
-        }
-
-        throw new \RuntimeException(sprintf('Failed to write cache file "%s".', $file));
-    }
-
-    /**
-     * Removes comments from a PHP source string.
-     *
-     * We don't use the PHP php_strip_whitespace() function
-     * as we want the content to be readable and well-formatted.
-     *
-     * @param string $source A PHP string
-     *
-     * @return string The PHP string with the comments removed
-     */
-    static private function stripComments($source)
-    {
-        if (!function_exists('token_get_all')) {
-            return $source;
-        }
-
-        $output = '';
-        foreach (token_get_all($source) as $token) {
-            if (is_string($token)) {
-                $output .= $token;
-            } elseif (!in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) {
-                $output .= $token[1];
-            }
-        }
-
-        // replace multiple new lines with a single newline
-        $output = preg_replace(array('/\s+$/Sm', '/\n+/S'), "\n", $output);
-
-        return $output;
-    }
-}
diff --git a/core/vendor/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php b/core/vendor/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php
deleted file mode 100644
index 8a958e0..0000000
--- a/core/vendor/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ClassLoader;
-
-/**
- * Checks that the class is actually declared in the included file.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class DebugUniversalClassLoader extends UniversalClassLoader
-{
-    /**
-     * Replaces all regular UniversalClassLoader instances by a DebugUniversalClassLoader ones.
-     */
-    static public function enable()
-    {
-        if (!is_array($functions = spl_autoload_functions())) {
-            return;
-        }
-
-        foreach ($functions as $function) {
-            spl_autoload_unregister($function);
-        }
-
-        foreach ($functions as $function) {
-            if (is_array($function) && $function[0] instanceof UniversalClassLoader) {
-                $loader = new static();
-                $loader->registerNamespaceFallbacks($function[0]->getNamespaceFallbacks());
-                $loader->registerPrefixFallbacks($function[0]->getPrefixFallbacks());
-                $loader->registerNamespaces($function[0]->getNamespaces());
-                $loader->registerPrefixes($function[0]->getPrefixes());
-
-                $function[0] = $loader;
-            }
-
-            spl_autoload_register($function);
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            require $file;
-
-            if (!class_exists($class, false) && !interface_exists($class, false) && (!function_exists('trait_exists') || !trait_exists($class, false))) {
-                throw new \RuntimeException(sprintf('The autoloader expected class "%s" to be defined in file "%s". The file was found but the class was not in it, the class name or namespace probably has a typo.', $class, $file));
-            }
-        }
-    }
-}
diff --git a/core/vendor/Symfony/Component/ClassLoader/MapClassLoader.php b/core/vendor/Symfony/Component/ClassLoader/MapClassLoader.php
deleted file mode 100644
index cf17d42..0000000
--- a/core/vendor/Symfony/Component/ClassLoader/MapClassLoader.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ClassLoader;
-
-/**
- * A class loader that uses a mapping file to look up paths.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class MapClassLoader
-{
-    private $map = array();
-
-    /**
-     * Constructor.
-     *
-     * @param array $map A map where keys are classes and values the absolute file path
-     */
-    public function __construct(array $map)
-    {
-        $this->map = $map;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param Boolean $prepend Whether to prepend the autoloader or not
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     */
-    public function loadClass($class)
-    {
-        if ('\\' === $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        if (isset($this->map[$class])) {
-            require $this->map[$class];
-        }
-    }
-
-    /**
-     * Finds the path to the file where the class is defined.
-     *
-     * @param string $class The name of the class
-     *
-     * @return string|null The path, if found
-     */
-    public function findFile($class)
-    {
-        if ('\\' === $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        if (isset($this->map[$class])) {
-            return $this->map[$class];
-        }
-    }
-}
diff --git a/core/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php b/core/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php
deleted file mode 100644
index babf950..0000000
--- a/core/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php
+++ /dev/null
@@ -1,265 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\ClassLoader;
-
-/**
- * UniversalClassLoader implements a "universal" autoloader for PHP 5.3.
- *
- * It is able to load classes that use either:
- *
- *  * The technical interoperability standards for PHP 5.3 namespaces and
- *    class names (https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md);
- *
- *  * The PEAR naming convention for classes (http://pear.php.net/).
- *
- * Classes from a sub-namespace or a sub-hierarchy of PEAR classes can be
- * looked for in a list of locations to ease the vendoring of a sub-set of
- * classes for large projects.
- *
- * Example usage:
- *
- *     $loader = new UniversalClassLoader();
- *
- *     // register classes with namespaces
- *     $loader->registerNamespaces(array(
- *         'Symfony\Component' => __DIR__.'/component',
- *         'Symfony'           => __DIR__.'/framework',
- *         'Sensio'            => array(__DIR__.'/src', __DIR__.'/vendor'),
- *     ));
- *
- *     // register a library using the PEAR naming convention
- *     $loader->registerPrefixes(array(
- *         'Swift_' => __DIR__.'/Swift',
- *     ));
- *
- *     // activate the autoloader
- *     $loader->register();
- *
- * In this example, if you try to use a class in the Symfony\Component
- * namespace or one of its children (Symfony\Component\Console for instance),
- * the autoloader will first look for the class under the component/
- * directory, and it will then fallback to the framework/ directory if not
- * found before giving up.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @api
- */
-class UniversalClassLoader
-{
-    private $namespaces = array();
-    private $prefixes = array();
-    private $namespaceFallbacks = array();
-    private $prefixFallbacks = array();
-
-    /**
-     * Gets the configured namespaces.
-     *
-     * @return array A hash with namespaces as keys and directories as values
-     */
-    public function getNamespaces()
-    {
-        return $this->namespaces;
-    }
-
-    /**
-     * Gets the configured class prefixes.
-     *
-     * @return array A hash with class prefixes as keys and directories as values
-     */
-    public function getPrefixes()
-    {
-        return $this->prefixes;
-    }
-
-    /**
-     * Gets the directory(ies) to use as a fallback for namespaces.
-     *
-     * @return array An array of directories
-     */
-    public function getNamespaceFallbacks()
-    {
-        return $this->namespaceFallbacks;
-    }
-
-    /**
-     * Gets the directory(ies) to use as a fallback for class prefixes.
-     *
-     * @return array An array of directories
-     */
-    public function getPrefixFallbacks()
-    {
-        return $this->prefixFallbacks;
-    }
-
-    /**
-     * Registers the directory to use as a fallback for namespaces.
-     *
-     * @param array $dirs An array of directories
-     *
-     * @api
-     */
-    public function registerNamespaceFallbacks(array $dirs)
-    {
-        $this->namespaceFallbacks = $dirs;
-    }
-
-    /**
-     * Registers the directory to use as a fallback for class prefixes.
-     *
-     * @param array $dirs An array of directories
-     *
-     * @api
-     */
-    public function registerPrefixFallbacks(array $dirs)
-    {
-        $this->prefixFallbacks = $dirs;
-    }
-
-    /**
-     * Registers an array of namespaces
-     *
-     * @param array $namespaces An array of namespaces (namespaces as keys and locations as values)
-     *
-     * @api
-     */
-    public function registerNamespaces(array $namespaces)
-    {
-        foreach ($namespaces as $namespace => $locations) {
-            $this->namespaces[$namespace] = (array) $locations;
-        }
-    }
-
-    /**
-     * Registers a namespace.
-     *
-     * @param string       $namespace The namespace
-     * @param array|string $paths     The location(s) of the namespace
-     *
-     * @api
-     */
-    public function registerNamespace($namespace, $paths)
-    {
-        $this->namespaces[$namespace] = (array) $paths;
-    }
-
-    /**
-     * Registers an array of classes using the PEAR naming convention.
-     *
-     * @param array $classes An array of classes (prefixes as keys and locations as values)
-     *
-     * @api
-     */
-    public function registerPrefixes(array $classes)
-    {
-        foreach ($classes as $prefix => $locations) {
-            $this->prefixes[$prefix] = (array) $locations;
-        }
-    }
-
-    /**
-     * Registers a set of classes using the PEAR naming convention.
-     *
-     * @param string       $prefix  The classes prefix
-     * @param array|string $paths   The location(s) of the classes
-     *
-     * @api
-     */
-    public function registerPrefix($prefix, $paths)
-    {
-        $this->prefixes[$prefix] = (array) $paths;
-    }
-
-    /**
-     * Registers this instance as an autoloader.
-     *
-     * @param Boolean $prepend Whether to prepend the autoloader or not
-     *
-     * @api
-     */
-    public function register($prepend = false)
-    {
-        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
-    }
-
-    /**
-     * Loads the given class or interface.
-     *
-     * @param string $class The name of the class
-     */
-    public function loadClass($class)
-    {
-        if ($file = $this->findFile($class)) {
-            require $file;
-        }
-    }
-
-    /**
-     * Finds the path to the file where the class is defined.
-     *
-     * @param string $class The name of the class
-     *
-     * @return string|null The path, if found
-     */
-    public function findFile($class)
-    {
-        if ('\\' == $class[0]) {
-            $class = substr($class, 1);
-        }
-
-        if (false !== $pos = strrpos($class, '\\')) {
-            // namespaced class name
-            $namespace = substr($class, 0, $pos);
-            foreach ($this->namespaces as $ns => $dirs) {
-                if (0 !== strpos($namespace, $ns)) {
-                    continue;
-                }
-
-                foreach ($dirs as $dir) {
-                    $className = substr($class, $pos + 1);
-                    $file = $dir.DIRECTORY_SEPARATOR.str_replace('\\', DIRECTORY_SEPARATOR, $namespace).DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $className).'.php';
-                    if (file_exists($file)) {
-                        return $file;
-                    }
-                }
-            }
-
-            foreach ($this->namespaceFallbacks as $dir) {
-                $file = $dir.DIRECTORY_SEPARATOR.str_replace('\\', DIRECTORY_SEPARATOR, $class).'.php';
-                if (file_exists($file)) {
-                    return $file;
-                }
-            }
-        } else {
-            // PEAR-like class name
-            foreach ($this->prefixes as $prefix => $dirs) {
-                if (0 !== strpos($class, $prefix)) {
-                    continue;
-                }
-
-                foreach ($dirs as $dir) {
-                    $file = $dir.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $class).'.php';
-                    if (file_exists($file)) {
-                        return $file;
-                    }
-                }
-            }
-
-            foreach ($this->prefixFallbacks as $dir) {
-                $file = $dir.DIRECTORY_SEPARATOR.str_replace('_', DIRECTORY_SEPARATOR, $class).'.php';
-                if (file_exists($file)) {
-                    return $file;
-                }
-            }
-        }
-    }
-}
diff --git a/core/vendor/Symfony/Component/ClassLoader/composer.json b/core/vendor/Symfony/Component/ClassLoader/composer.json
deleted file mode 100644
index f8bde98..0000000
--- a/core/vendor/Symfony/Component/ClassLoader/composer.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-    "name": "symfony/class-loader",
-    "type": "library",
-    "description": "Symfony ClassLoader Component",
-    "keywords": [],
-    "homepage": "http://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "http://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.2"
-    },
-    "autoload": {
-        "psr-0": { "Symfony\\Component\\ClassLoader": "" }
-    },
-    "target-dir": "Symfony/Component/ClassLoader"
-}
diff --git a/core/vendor/Symfony/Component/EventDispatcher/Event.php b/core/vendor/Symfony/Component/EventDispatcher/Event.php
deleted file mode 100644
index fc2c0d4..0000000
--- a/core/vendor/Symfony/Component/EventDispatcher/Event.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\EventDispatcher;
-
-/**
- * Event is the base class for classes containing event data.
- *
- * This class contains no event data. It is used by events that do not pass
- * state information to an event handler when an event is raised.
- *
- * You can call the method stopPropagation() to abort the execution of
- * further listeners in your event listener.
- *
- * @author  Guilherme Blanco <guilhermeblanco@hotmail.com>
- * @author  Jonathan Wage <jonwage@gmail.com>
- * @author  Roman Borschel <roman@code-factory.org>
- * @author  Bernhard Schussek <bschussek@gmail.com>
- *
- * @api
- */
-class Event
-{
-    /**
-     * @var Boolean Whether no further event listeners should be triggered
-     */
-    private $propagationStopped = false;
-
-    /**
-     * @var EventDispatcher Dispatcher that dispatched this event
-     */
-    private $dispatcher;
-
-    /**
-     * @var string This event's name
-     */
-    private $name;
-
-    /**
-     * Returns whether further event listeners should be triggered.
-     *
-     * @see Event::stopPropagation
-     * @return Boolean Whether propagation was already stopped for this event.
-     *
-     * @api
-     */
-    public function isPropagationStopped()
-    {
-        return $this->propagationStopped;
-    }
-
-    /**
-     * Stops the propagation of the event to further event listeners.
-     *
-     * If multiple event listeners are connected to the same event, no
-     * further event listener will be triggered once any trigger calls
-     * stopPropagation().
-     *
-     * @api
-     */
-    public function stopPropagation()
-    {
-        $this->propagationStopped = true;
-    }
-
-    /**
-     * Stores the EventDispatcher that dispatches this Event
-     *
-     * @param EventDispatcher $dispatcher
-     *
-     * @api
-     */
-    public function setDispatcher(EventDispatcher $dispatcher)
-    {
-        $this->dispatcher = $dispatcher;
-    }
-
-    /**
-     * Returns the EventDispatcher that dispatches this Event
-     *
-     * @return EventDispatcher
-     *
-     * @api
-     */
-    public function getDispatcher()
-    {
-        return $this->dispatcher;
-    }
-
-    /**
-     * Gets the event's name.
-     *
-     * @return string
-     *
-     * @api
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Sets the event's name property.
-     *
-     * @param string $name The event name.
-     *
-     * @api
-     */
-    public function setName($name)
-    {
-        $this->name = $name;
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/CacheClearer/CacheClearerInterface.php b/core/vendor/Symfony/Component/HttpKernel/CacheClearer/CacheClearerInterface.php
deleted file mode 100644
index 1588b67..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/CacheClearer/CacheClearerInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheClearer;
-
-/**
- * CacheClearerInterface.
- *
- * @author Dustin Dobervich <ddobervich@gmail.com>
- */
-interface CacheClearerInterface
-{
-    /**
-     * Clears any caches necessary.
-     *
-     * @param string $cacheDir The cache directory.
-     */
-    function clear($cacheDir);
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/CacheClearer/ChainCacheClearer.php b/core/vendor/Symfony/Component/HttpKernel/CacheClearer/ChainCacheClearer.php
deleted file mode 100644
index 7b492d0..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/CacheClearer/ChainCacheClearer.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheClearer;
-
-/**
- * ChainCacheClearer.
- *
- * @author Dustin Dobervich <ddobervich@gmail.com>
- */
-class ChainCacheClearer implements CacheClearerInterface
-{
-    /**
-     * @var array $clearers
-     */
-    protected $clearers;
-
-    /**
-     * Constructs a new instance of ChainCacheClearer.
-     *
-     * @param array $clearers The initial clearers.
-     */
-    public function __construct(array $clearers = array())
-    {
-        $this->clearers = $clearers;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function clear($cacheDir)
-    {
-        foreach ($this->clearers as $clearer) {
-            $clearer->clear($cacheDir);
-        }
-    }
-
-    /**
-     * Adds a cache clearer to the aggregate.
-     *
-     * @param CacheClearerInterface $clearer
-     */
-    public function add(CacheClearerInterface $clearer)
-    {
-        $this->clearers[] = $clearer;
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php b/core/vendor/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php
deleted file mode 100644
index 0476161..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\CacheWarmer;
-
-/**
- * Interface for classes that support warming their cache.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-interface WarmableInterface
-{
-    /**
-     * Warms up the cache.
-     *
-     * @param string $cacheDir The cache directory
-     */
-    function warmUp($cacheDir);
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/TimeDataCollector.php b/core/vendor/Symfony/Component/HttpKernel/DataCollector/TimeDataCollector.php
deleted file mode 100644
index bdeb84c..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/DataCollector/TimeDataCollector.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\DataCollector;
-
-use Symfony\Component\HttpKernel\DataCollector\DataCollector;
-use Symfony\Component\HttpKernel\KernelInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * TimeDataCollector.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TimeDataCollector extends DataCollector
-{
-    protected $kernel;
-
-    public function __construct(KernelInterface $kernel = null)
-    {
-        $this->kernel = $kernel;
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function collect(Request $request, Response $response, \Exception $exception = null)
-    {
-        $this->data = array(
-            'start_time' => (null !== $this->kernel ? $this->kernel->getStartTime() : $_SERVER['REQUEST_TIME']) * 1000,
-            'events'     => array(),
-        );
-    }
-
-    /**
-     * Sets the request events.
-     *
-     * @param array $events The request events
-     */
-    public function setEvents(array $events)
-    {
-        foreach ($events as $event) {
-            $event->ensureStopped();
-        }
-
-        $this->data['events'] = $events;
-    }
-
-    /**
-     * Gets the request events.
-     *
-     * @return array The request events
-     */
-    public function getEvents()
-    {
-        return $this->data['events'];
-    }
-
-    /**
-     * Gets the request elapsed time.
-     *
-     * @return integer The elapsed time
-     */
-    public function getTotalTime()
-    {
-        $values = array_values($this->data['events']);
-        $lastEvent = $values[count($values) - 1];
-
-        return $lastEvent->getOrigin() + $lastEvent->getEndTime() - $this->data['start_time'];
-    }
-
-    /**
-     * Gets the initialization time.
-     *
-     * This is the time spent until the beginning of the request handling.
-     *
-     * @return integer The elapsed time
-     */
-    public function getInitTime()
-    {
-        return $this->data['events']['section']->getOrigin() - $this->getStartTime();
-    }
-
-    /**
-     * Gets the request time.
-     *
-     * @return integer The time
-     */
-    public function getStartTime()
-    {
-        return $this->data['start_time'];
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function getName()
-    {
-        return 'time';
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/Debug/Stopwatch.php b/core/vendor/Symfony/Component/HttpKernel/Debug/Stopwatch.php
deleted file mode 100644
index f964d42..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/Debug/Stopwatch.php
+++ /dev/null
@@ -1,124 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Symfony\Component\HttpKernel\Debug;
-
-/**
- * Stopwatch provides a way to profile code.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Stopwatch
-{
-    private $waiting;
-    private $sections;
-    private $events;
-    private $origin;
-
-    /**
-     * Starts a new section.
-     */
-    public function startSection()
-    {
-        if ($this->events) {
-            $this->start('section.child', 'section');
-            $this->waiting[] = array($this->events, $this->origin);
-            $this->events = array();
-        }
-
-        $this->origin = microtime(true) * 1000;
-
-        $this->start('section');
-    }
-
-    /**
-     * Stops the last started section.
-     *
-     * The id parameter is used to retrieve the events from this section.
-     *
-     * @see getSectionEvents
-     *
-     * @param string $id The identifier of the section
-     */
-    public function stopSection($id)
-    {
-        $this->stop('section');
-
-        if (null !== $id) {
-            $this->sections[$id] = $this->events;
-        }
-
-        if ($this->waiting) {
-            list($this->events, $this->origin) = array_pop($this->waiting);
-            $this->stop('section.child');
-        } else {
-            $this->origin = null;
-            $this->events = array();
-        }
-    }
-
-    /**
-     * Starts an event.
-     *
-     * @param string $name     The event name
-     * @param string $category The event category
-     *
-     * @return StopwatchEvent A StopwatchEvent instance
-     */
-    public function start($name, $category = null)
-    {
-        if (!isset($this->events[$name])) {
-            $this->events[$name] = new StopwatchEvent($this->origin ?: microtime(true) * 1000, $category);
-        }
-
-        return $this->events[$name]->start();
-    }
-
-    /**
-     * Stops an event.
-     *
-     * @param string $name The event name
-     *
-     * @return StopwatchEvent A StopwatchEvent instance
-     */
-    public function stop($name)
-    {
-        if (!isset($this->events[$name])) {
-            throw new \LogicException(sprintf('Event "%s" is not started.', $name));
-        }
-
-        return $this->events[$name]->stop();
-    }
-
-    /**
-     * Stops then restart an event.
-     *
-     * @param string $name The event name
-     *
-     * @return StopwatchEvent A StopwatchEvent instance
-     */
-    public function lap($name)
-    {
-        return $this->stop($name)->start();
-    }
-
-    /**
-     * Gets all events for a given section.
-     *
-     * @param string $id A section identifier
-     *
-     * @return StopwatchEvent[] An array of StopwatchEvent instances
-     */
-    public function getSectionEvents($id)
-    {
-        return isset($this->sections[$id]) ? $this->sections[$id] : array();
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/Debug/StopwatchEvent.php b/core/vendor/Symfony/Component/HttpKernel/Debug/StopwatchEvent.php
deleted file mode 100644
index f606f1b..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/Debug/StopwatchEvent.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony framework.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Symfony\Component\HttpKernel\Debug;
-
-/**
- * Represents an Event managed by Stopwatch.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class StopwatchEvent
-{
-    private $periods;
-    private $origin;
-    private $category;
-    private $started;
-
-    /**
-     * Constructor.
-     *
-     * @param integer $origin   The origin time in milliseconds
-     * @param string  $category The event category
-     *
-     * @throws \InvalidArgumentException When the raw time is not valid
-     */
-    public function __construct($origin, $category = null)
-    {
-        $this->origin = $this->formatTime($origin);
-        $this->category = is_string($category) ? $category : 'default';
-        $this->started = array();
-        $this->periods = array();
-    }
-
-    /**
-     * Gets the category.
-     *
-     * @return string The category
-     */
-    public function getCategory()
-    {
-        return $this->category;
-    }
-
-    /**
-     * Gets the origin.
-     *
-     * @return integer The origin in milliseconds
-     */
-    public function getOrigin()
-    {
-        return $this->origin;
-    }
-
-    /**
-     * Starts a new event period.
-     *
-     * @return StopwatchEvent The event.
-     */
-    public function start()
-    {
-        $this->started[] = $this->getNow();
-
-        return $this;
-    }
-
-    /**
-     * Stops the last started event period.
-     *
-     * @return StopwatchEvent The event.
-     */
-    public function stop()
-    {
-        if (!count($this->started)) {
-            throw new \LogicException('stop() called but start() has not been called before.');
-        }
-
-        $this->periods[] = array(array_pop($this->started), $this->getNow());
-
-        return $this;
-    }
-
-    /**
-     * Stops the current period and then starts a new one.
-     *
-     * @return StopwatchEvent The event.
-     */
-    public function lap()
-    {
-        return $this->stop()->start();
-    }
-
-    /**
-     * Stops all non already stopped periods.
-     */
-    public function ensureStopped()
-    {
-        while (count($this->started)) {
-            $this->stop();
-        }
-    }
-
-    /**
-     * Gets all event periods.
-     *
-     * @return array An array of periods
-     */
-    public function getPeriods()
-    {
-        return $this->periods;
-    }
-
-    /**
-     * Gets the relative time of the start of the first period.
-     *
-     * @return integer The time (in milliseconds)
-     */
-    public function getStartTime()
-    {
-        return isset($this->periods[0]) ? $this->periods[0][0] : 0;
-    }
-
-    /**
-     * Gets the relative time of the end of the last period.
-     *
-     * @return integer The time (in milliseconds)
-     */
-    public function getEndTime()
-    {
-        return ($count = count($this->periods)) ? $this->periods[$count - 1][1] : 0;
-    }
-
-    /**
-     * Gets the total time of all periods.
-     *
-     * @return integer The time (in milliseconds)
-     */
-    public function getTotalTime()
-    {
-        $total = 0;
-        foreach ($this->periods as $period) {
-            $total += $period[1] - $period[0];
-        }
-
-        return $this->formatTime($total);
-    }
-
-    private function getNow()
-    {
-        return $this->formatTime(microtime(true) * 1000 - $this->origin);
-    }
-
-    /**
-     * Formats a time.
-     *
-     * @param numerical $time A raw time
-     *
-     * @return float The formatted time
-     *
-     * @throws \InvalidArgumentException When the raw time is not valid
-     */
-    private function formatTime($time)
-    {
-        if (!is_numeric($time)) {
-            throw new \InvalidArgumentException('The time must be a numerical value');
-        }
-
-        return round($time, 1);
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/Event/PostResponseEvent.php b/core/vendor/Symfony/Component/HttpKernel/Event/PostResponseEvent.php
deleted file mode 100644
index 6848f78..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/Event/PostResponseEvent.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Event;
-
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\EventDispatcher\Event;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Allows to execute logic after a response was sent
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
-class PostResponseEvent extends Event
-{
-    /**
-     * The kernel in which this event was thrown
-     * @var HttpKernelInterface
-     */
-    private $kernel;
-
-    private $request;
-
-    private $response;
-
-    public function __construct(HttpKernelInterface $kernel, Request $request, Response $response)
-    {
-        $this->kernel = $kernel;
-        $this->request = $request;
-        $this->response = $response;
-    }
-
-    /**
-     * Returns the kernel in which this event was thrown.
-     *
-     * @return HttpKernelInterface
-     */
-    public function getKernel()
-    {
-        return $this->kernel;
-    }
-
-    /**
-     * Returns the request for which this event was thrown.
-     *
-     * @return Request
-     */
-    public function getRequest()
-    {
-        return $this->request;
-    }
-
-    /**
-     * Returns the reponse for which this event was thrown.
-     *
-     * @return Response
-     */
-    public function getResponse()
-    {
-        return $this->response;
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/EventListener/LocaleListener.php b/core/vendor/Symfony/Component/HttpKernel/EventListener/LocaleListener.php
deleted file mode 100644
index 8adefc5..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/EventListener/LocaleListener.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\Routing\RouterInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Initializes the locale based on the current request.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class LocaleListener implements EventSubscriberInterface
-{
-    private $router;
-    private $defaultLocale;
-
-    public function __construct($defaultLocale = 'en', RouterInterface $router = null)
-    {
-        $this->defaultLocale = $defaultLocale;
-        $this->router = $router;
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-
-        if ($request->hasPreviousSession()) {
-            $request->setDefaultLocale($request->getSession()->get('_locale', $this->defaultLocale));
-        } else {
-            $request->setDefaultLocale($this->defaultLocale);
-        }
-
-        if ($locale = $request->attributes->get('_locale')) {
-            $request->setLocale($locale);
-
-            if ($request->hasPreviousSession()) {
-                $request->getSession()->set('_locale', $request->getLocale());
-            }
-        }
-
-        if (null !== $this->router) {
-            $this->router->getContext()->setParameter('_locale', $request->getLocale());
-        }
-    }
-
-    static public function getSubscribedEvents()
-    {
-        return array(
-            // must be registered after the Router to have access to the _locale
-            KernelEvents::REQUEST => array(array('onKernelRequest', 16)),
-        );
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/EventListener/RouterListener.php b/core/vendor/Symfony/Component/HttpKernel/EventListener/RouterListener.php
deleted file mode 100644
index a352685..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/EventListener/RouterListener.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\HttpKernel\Log\LoggerInterface;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\Event\GetResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * Initializes request attributes based on a matching route.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class RouterListener implements EventSubscriberInterface
-{
-    private $urlMatcher;
-    private $logger;
-
-    public function __construct(UrlMatcherInterface $urlMatcher, LoggerInterface $logger = null)
-    {
-        $this->urlMatcher = $urlMatcher;
-        $this->logger = $logger;
-    }
-
-    public function onKernelRequest(GetResponseEvent $event)
-    {
-        $request = $event->getRequest();
-
-        if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
-            $this->urlMatcher->getContext()->fromRequest($request);
-        }
-
-        if ($request->attributes->has('_controller')) {
-            // routing is already done
-            return;
-        }
-
-        // add attributes based on the path info (routing)
-        try {
-            $parameters = $this->urlMatcher->match($request->getPathInfo());
-
-            if (null !== $this->logger) {
-                $this->logger->info(sprintf('Matched route "%s" (parameters: %s)', $parameters['_route'], $this->parametersToString($parameters)));
-            }
-
-            $request->attributes->add($parameters);
-            unset($parameters['_route']);
-            $request->attributes->set('_route_params', $parameters);
-        } catch (ResourceNotFoundException $e) {
-            $message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getPathInfo());
-
-            throw new NotFoundHttpException($message, $e);
-        } catch (MethodNotAllowedException $e) {
-            $message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getPathInfo(), strtoupper(implode(', ', $e->getAllowedMethods())));
-
-            throw new MethodNotAllowedHttpException($e->getAllowedMethods(), $message, $e);
-        }
-    }
-
-    private function parametersToString(array $parameters)
-    {
-        $pieces = array();
-        foreach ($parameters as $key => $val) {
-            $pieces[] = sprintf('"%s": "%s"', $key, (is_string($val) ? $val : json_encode($val)));
-        }
-
-        return implode(', ', $pieces);
-    }
-
-    static public function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::REQUEST => array(array('onKernelRequest', 32)),
-        );
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/EventListener/StreamedResponseListener.php b/core/vendor/Symfony/Component/HttpKernel/EventListener/StreamedResponseListener.php
deleted file mode 100644
index 588c5fe..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/EventListener/StreamedResponseListener.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\EventListener;
-
-use Symfony\Component\HttpFoundation\StreamedResponse;
-use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
-
-/**
- * StreamedResponseListener is responsible for sending the Response
- * to the client.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class StreamedResponseListener implements EventSubscriberInterface
-{
-    /**
-     * Filters the Response.
-     *
-     * @param FilterResponseEvent $event A FilterResponseEvent instance
-     */
-    public function onKernelResponse(FilterResponseEvent $event)
-    {
-        if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
-            return;
-        }
-
-        $response = $event->getResponse();
-
-        if ($response instanceof StreamedResponse) {
-            $response->send();
-        }
-    }
-
-    static public function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::RESPONSE => array('onKernelResponse', -1024),
-        );
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php b/core/vendor/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php
deleted file mode 100644
index 588806b..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/Profiler/FileProfilerStorage.php
+++ /dev/null
@@ -1,264 +0,0 @@
-<?php
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Profiler;
-
-/**
- * Storage for profiler using files.
- *
- * @author Alexandre Salomé <alexandre.salome@gmail.com>
- */
-class FileProfilerStorage implements ProfilerStorageInterface
-{
-    /**
-     * Folder where profiler data are stored.
-     *
-     * @var string
-     */
-    private $folder;
-
-    /**
-     * Constructs the file storage using a "dsn-like" path.
-     *
-     * Example : "file:/path/to/the/storage/folder"
-     *
-     * @param string $dsn The DSN
-     */
-    public function __construct($dsn)
-    {
-        if (0 !== strpos($dsn, 'file:')) {
-            throw new \InvalidArgumentException("FileStorage DSN must start with file:");
-        }
-        $this->folder = substr($dsn, 5);
-
-        if (!is_dir($this->folder)) {
-            mkdir($this->folder);
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function find($ip, $url, $limit, $method)
-    {
-        $file = $this->getIndexFilename();
-
-        if (!file_exists($file)) {
-            return array();
-        }
-
-        $file = fopen($file, 'r');
-        fseek($file, 0, SEEK_END);
-
-        $result = array();
-
-        while ($limit > 0) {
-            $line = $this->readLineFromFile($file);
-
-            if (false === $line) {
-                break;
-            }
-
-            if ($line === '') {
-                continue;
-            }
-
-            list($csvToken, $csvIp, $csvMethod, $csvUrl, $csvTime, $csvParent) = str_getcsv($line);
-
-            if ($ip && false === strpos($csvIp, $ip) || $url && false === strpos($csvUrl, $url) || $method && false === strpos($csvMethod, $method)) {
-                continue;
-            }
-
-            $result[$csvToken] = array(
-                'token'  => $csvToken,
-                'ip'     => $csvIp,
-                'method' => $csvMethod,
-                'url'    => $csvUrl,
-                'time'   => $csvTime,
-                'parent' => $csvParent,
-            );
-            --$limit;
-        }
-
-        fclose($file);
-
-        return array_values($result);
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function purge()
-    {
-        $flags = \FilesystemIterator::SKIP_DOTS;
-        $iterator = new \RecursiveDirectoryIterator($this->folder, $flags);
-        $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::CHILD_FIRST);
-
-        foreach ($iterator as $file) {
-            if (is_file($file)) {
-                unlink($file);
-            } else {
-                rmdir($file);
-            }
-        }
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function read($token)
-    {
-        if (!$token || !file_exists($file = $this->getFilename($token))) {
-            return null;
-        }
-
-        return $this->createProfileFromData($token, unserialize(file_get_contents($file)));
-    }
-
-    /**
-     * {@inheritdoc}
-     */
-    public function write(Profile $profile)
-    {
-        $file = $this->getFilename($profile->getToken());
-
-        // Create directory
-        $dir = dirname($file);
-        if (!is_dir($dir)) {
-            mkdir($dir, 0777, true);
-        }
-
-        // Store profile
-        $data = array(
-            'token'    => $profile->getToken(),
-            'parent'   => $profile->getParentToken(),
-            'children' => array_map(function ($p) { return $p->getToken(); }, $profile->getChildren()),
-            'data'     => $profile->getCollectors(),
-            'ip'       => $profile->getIp(),
-            'method'   => $profile->getMethod(),
-            'url'      => $profile->getUrl(),
-            'time'     => $profile->getTime(),
-        );
-
-        if (false === file_put_contents($file, serialize($data))) {
-            return false;
-        }
-
-        // Add to index
-        if (false === $file = fopen($this->getIndexFilename(), 'a')) {
-            return false;
-        }
-
-        fputcsv($file, array(
-            $profile->getToken(),
-            $profile->getIp(),
-            $profile->getMethod(),
-            $profile->getUrl(),
-            $profile->getTime(),
-            $profile->getParentToken(),
-        ));
-        fclose($file);
-
-        return true;
-    }
-
-    /**
-     * Gets filename to store data, associated to the token.
-     *
-     * @return string The profile filename
-     */
-    protected function getFilename($token)
-    {
-        // Uses 4 last characters, because first are mostly the same.
-        $folderA = substr($token, -2, 2);
-        $folderB = substr($token, -4, 2);
-
-        return $this->folder.'/'.$folderA.'/'.$folderB.'/'.$token;
-    }
-
-    /**
-     * Gets the index filename.
-     *
-     * @return string The index filename
-     */
-    protected function getIndexFilename()
-    {
-        return $this->folder.'/index.csv';
-    }
-
-    /**
-     * Reads a line in the file, ending with the current position.
-     *
-     * This function automatically skips the empty lines and do not include the line return in result value.
-     *
-     * @param resource $file The file resource, with the pointer placed at the end of the line to read
-     *
-     * @return mixed A string representating the line or FALSE if beginning of file is reached
-     */
-    protected function readLineFromFile($file)
-    {
-        if (ftell($file) === 0) {
-            return false;
-        }
-
-        fseek($file, -1, SEEK_CUR);
-        $str = '';
-
-        while (true) {
-            $char = fgetc($file);
-
-            if ($char === "\n") {
-                // Leave the file with cursor before the line return
-                fseek($file, -1, SEEK_CUR);
-                break;
-            }
-
-            $str = $char.$str;
-
-            if (ftell($file) === 1) {
-                // All file is read, so we move cursor to the position 0
-                fseek($file, -1, SEEK_CUR);
-                break;
-            }
-
-            fseek($file, -2, SEEK_CUR);
-        }
-
-        return $str === '' ? $this->readLineFromFile($file) : $str;
-    }
-
-    protected function createProfileFromData($token, $data, $parent = null)
-    {
-        $profile = new Profile($token);
-        $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
-        $profile->setUrl($data['url']);
-        $profile->setTime($data['time']);
-        $profile->setCollectors($data['data']);
-
-        if (!$parent && $data['parent']) {
-            $parent = $this->read($data['parent']);
-        }
-
-        if ($parent) {
-            $profile->setParent($parent);
-        }
-
-        foreach ($data['children'] as $token) {
-            if (!$token || !file_exists($file = $this->getFilename($token))) {
-                continue;
-            }
-
-            $profile->addChild($this->createProfileFromData($token, unserialize(file_get_contents($file)), $profile));
-        }
-
-        return $profile;
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/Profiler/MongoDbProfilerStorage.php b/core/vendor/Symfony/Component/HttpKernel/Profiler/MongoDbProfilerStorage.php
deleted file mode 100644
index ba03aa3..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/Profiler/MongoDbProfilerStorage.php
+++ /dev/null
@@ -1,227 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel\Profiler;
-
-class MongoDbProfilerStorage implements ProfilerStorageInterface
-{
-    protected $dsn;
-    protected $lifetime;
-    private $mongo;
-
-    /**
-     * Constructor.
-     *
-     * @param string  $dsn      A data source name
-     * @param string  $username Not used
-     * @param string  $password Not used
-     * @param integer $lifetime The lifetime to use for the purge
-     */
-    public function __construct($dsn, $username = '', $password = '', $lifetime = 86400)
-    {
-        $this->dsn = $dsn;
-        $this->lifetime = (int) $lifetime;
-    }
-
-    /**
-     * Finds profiler tokens for the given criteria.
-     *
-     * @param string $ip     The IP
-     * @param string $url    The URL
-     * @param string $limit  The maximum number of tokens to return
-     * @param string $method The request method
-     *
-     * @return array An array of tokens
-     */
-    public function find($ip, $url, $limit, $method)
-    {
-        $cursor = $this->getMongo()->find($this->buildQuery($ip, $url, $method), array('_id', 'parent', 'ip', 'method', 'url', 'time'))->sort(array('time' => -1))->limit($limit);
-
-        $tokens = array();
-        foreach ($cursor as $profile) {
-            $tokens[] = $this->getData($profile);
-        }
-
-        return $tokens;
-    }
-
-    /**
-     * Purges all data from the database.
-     */
-    public function purge()
-    {
-        $this->getMongo()->remove(array());
-    }
-
-    /**
-     * Reads data associated with the given token.
-     *
-     * The method returns false if the token does not exists in the storage.
-     *
-     * @param string $token A token
-     *
-     * @return Profile The profile associated with token
-     */
-    public function read($token)
-    {
-        $profile = $this->getMongo()->findOne(array('_id' => $token, 'data' => array('$exists' => true)));
-
-        if (null !== $profile) {
-            $profile = $this->createProfileFromData($this->getData($profile));
-        }
-
-        return $profile;
-    }
-
-    /**
-     * Saves a Profile.
-     *
-     * @param Profile $profile A Profile instance
-     *
-     * @return Boolean Write operation successful
-     */
-    public function write(Profile $profile)
-    {
-        $this->cleanup();
-
-        $record = array(
-            '_id' => $profile->getToken(),
-            'parent' => $profile->getParentToken(),
-            'data' => serialize($profile->getCollectors()),
-            'ip' => $profile->getIp(),
-            'method' => $profile->getMethod(),
-            'url' => $profile->getUrl(),
-            'time' => $profile->getTime()
-        );
-
-        return $this->getMongo()->insert(array_filter($record, function ($v) { return !empty($v); }));
-    }
-
-    /**
-     * Internal convenience method that returns the instance of the MongoDB Collection
-     *
-     * @return \MongoCollection
-     */
-    protected function getMongo()
-    {
-        if ($this->mongo === null) {
-            if (preg_match('#^(mongodb://.*)/(.*)/(.*)$#', $this->dsn, $matches)) {
-                $mongo = new \Mongo($matches[1]);
-                $database = $matches[2];
-                $collection = $matches[3];
-                $this->mongo = $mongo->selectCollection($database, $collection);
-            } else {
-                throw new \RuntimeException('Please check your configuration. You are trying to use MongoDB with an invalid dsn. "'.$this->dsn.'"');
-            }
-        }
-
-        return $this->mongo;
-    }
-
-    /**
-     * @param array $data
-     * @return Profile
-     */
-    protected function createProfileFromData(array $data)
-    {
-        $profile = $this->getProfile($data);
-
-        if ($data['parent']) {
-            $parent = $this->getMongo()->findOne(array('_id' => $data['parent'], 'data' => array('$exists' => true)));
-            if ($parent) {
-                $profile->setParent($this->getProfile($this->getData($parent)));
-            }
-        }
-
-        $profile->setChildren($this->readChildren($data['token']));
-
-        return $profile;
-    }
-
-    /**
-     * @param string $token
-     * @return array
-     */
-    protected function readChildren($token)
-    {
-        $profiles = array();
-
-        $cursor = $this->getMongo()->find(array('parent' => $token, 'data' => array('$exists' => true)));
-        foreach ($cursor as $d) {
-            $profiles[] = $this->getProfile($this->getData($d));
-        }
-
-        return $profiles;
-    }
-
-    protected function cleanup()
-    {
-        $this->getMongo()->remove(array('time' => array('$lt' => time() - $this->lifetime)));
-    }
-
-    /**
-     * @param string $ip
-     * @param string $url
-     * @param string $method
-     * @return array
-     */
-    private function buildQuery($ip, $url, $method)
-    {
-        $query = array();
-
-        if (!empty($ip)) {
-            $query['ip'] = $ip;
-        }
-
-        if (!empty($url)) {
-            $query['url'] = $url;
-        }
-
-        if (!empty($method)) {
-            $query['method'] = $method;
-        }
-
-        return $query;
-    }
-
-    /**
-     * @param array $data
-     * @return array
-     */
-    private function getData(array $data)
-    {
-        return array(
-            'token' => $data['_id'],
-            'parent' => isset($data['parent']) ? $data['parent'] : null,
-            'ip' => isset($data['ip']) ? $data['ip'] : null,
-            'method' => isset($data['method']) ? $data['method'] : null,
-            'url' => isset($data['url']) ? $data['url'] : null,
-            'time' => isset($data['time']) ? $data['time'] : null,
-            'data' => isset($data['data']) ? $data['data'] : null,
-        );
-    }
-
-    /**
-     * @param array $data
-     * @return Profile
-     */
-    private function getProfile(array $data)
-    {
-        $profile = new Profile($data['token']);
-        $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
-        $profile->setUrl($data['url']);
-        $profile->setTime($data['time']);
-        $profile->setCollectors(unserialize($data['data']));
-
-        return $profile;
-    }
-}
diff --git a/core/vendor/Symfony/Component/HttpKernel/TerminableInterface.php b/core/vendor/Symfony/Component/HttpKernel/TerminableInterface.php
deleted file mode 100644
index 78a362f..0000000
--- a/core/vendor/Symfony/Component/HttpKernel/TerminableInterface.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpKernel;
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Terminable extends the Kernel request/response cycle with dispatching a post
- * response event after sending the response and before shutting down the kernel.
- *
- * @author Jordi Boggiano <j.boggiano@seld.be>
- * @author Pierre Minnieur <pierre.minnieur@sensiolabs.de>
- *
- * @api
- */
-interface TerminableInterface
-{
-    /**
-     * Terminates a request/response cycle.
-     *
-     * Should be called after sending the response and before shutting down the kernel.
-     *
-     * @param Request  $request  A Request instance
-     * @param Response $response A Response instance
-     *
-     * @api
-     */
-    function terminate(Request $request, Response $response);
-}
diff --git a/core/vendor/Symfony/Component/Routing/LICENSE b/core/vendor/Symfony/Component/Routing/LICENSE
deleted file mode 100644
index 89df448..0000000
--- a/core/vendor/Symfony/Component/Routing/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2011 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/TraceableUrlMatcher.php b/core/vendor/Symfony/Component/Routing/Matcher/TraceableUrlMatcher.php
deleted file mode 100644
index ec00380..0000000
--- a/core/vendor/Symfony/Component/Routing/Matcher/TraceableUrlMatcher.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Routing\Matcher;
-
-use Symfony\Component\Routing\Exception\ExceptionInterface;
-use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\RouteCollection;
-use Symfony\Component\Routing\Matcher\UrlMatcher;
-
-/**
- * TraceableUrlMatcher helps debug path info matching by tracing the match.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class TraceableUrlMatcher extends UrlMatcher
-{
-    const ROUTE_DOES_NOT_MATCH = 0;
-    const ROUTE_ALMOST_MATCHES = 1;
-    const ROUTE_MATCHES        = 2;
-
-    protected $traces;
-
-    public function getTraces($pathinfo)
-    {
-        $this->traces = array();
-
-        try {
-            $this->match($pathinfo);
-        } catch (ExceptionInterface $e) {
-        }
-
-        return $this->traces;
-    }
-
-    protected function matchCollection($pathinfo, RouteCollection $routes)
-    {
-        $pathinfo = urldecode($pathinfo);
-
-        foreach ($routes as $name => $route) {
-            if ($route instanceof RouteCollection) {
-                if (!$ret = $this->matchCollection($pathinfo, $route)) {
-                    continue;
-                }
-
-                return true;
-            }
-
-            $compiledRoute = $route->compile();
-
-            if (!preg_match($compiledRoute->getRegex(), $pathinfo, $matches)) {
-                // does it match without any requirements?
-                $r = new Route($route->getPattern(), $route->getDefaults(), array(), $route->getOptions());
-                $cr = $r->compile();
-                if (!preg_match($cr->getRegex(), $pathinfo)) {
-                    $this->addTrace(sprintf('Pattern "%s" does not match', $route->getPattern()), self::ROUTE_DOES_NOT_MATCH, $name, $route);
-
-                    continue;
-                }
-
-                foreach ($route->getRequirements() as $n => $regex) {
-                    $r = new Route($route->getPattern(), $route->getDefaults(), array($n => $regex), $route->getOptions());
-                    $cr = $r->compile();
-
-                    if (in_array($n, $cr->getVariables()) && !preg_match($cr->getRegex(), $pathinfo)) {
-                        $this->addTrace(sprintf('Requirement for "%s" does not match (%s)', $n, $regex), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                        continue;
-                    }
-                }
-
-                continue;
-            }
-
-            // check HTTP method requirement
-            if ($req = $route->getRequirement('_method')) {
-                // HEAD and GET are equivalent as per RFC
-                if ('HEAD' === $method = $this->context->getMethod()) {
-                    $method = 'GET';
-                }
-
-                if (!in_array($method, $req = explode('|', strtoupper($req)))) {
-                    $this->allow = array_merge($this->allow, $req);
-
-                    $this->addTrace(sprintf('Method "%s" does not match the requirement ("%s")', $this->context->getMethod(), implode(', ', $req)), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                    continue;
-                }
-            }
-
-            // check HTTP scheme requirement
-            if ($scheme = $route->getRequirement('_scheme')) {
-                if ($this->context->getScheme() !== $scheme) {
-                    $this->addTrace(sprintf('Scheme "%s" does not match the requirement ("%s"); the user will be redirected', $this->context->getScheme(), $scheme), self::ROUTE_ALMOST_MATCHES, $name, $route);
-
-                    return true;
-                }
-            }
-
-            $this->addTrace('Route matches!', self::ROUTE_MATCHES, $name, $route);
-
-            return true;
-        }
-    }
-
-    private function addTrace($log, $level = self::ROUTE_DOES_NOT_MATCH, $name = null, $route = null)
-    {
-        $this->traces[] = array(
-            'log'     => $log,
-            'name'    => $name,
-            'level'   => $level,
-            'pattern' => null !== $route ? $route->getPattern() : null,
-        );
-    }
-}
diff --git a/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Event.php b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Event.php
new file mode 100644
index 0000000..757c69b
--- /dev/null
+++ b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Event.php
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\EventDispatcher;
+
+/**
+ * Event is the base class for classes containing event data.
+ *
+ * This class contains no event data. It is used by events that do not pass
+ * state information to an event handler when an event is raised.
+ *
+ * You can call the method stopPropagation() to abort the execution of
+ * further listeners in your event listener.
+ *
+ * @author  Guilherme Blanco <guilhermeblanco@hotmail.com>
+ * @author  Jonathan Wage <jonwage@gmail.com>
+ * @author  Roman Borschel <roman@code-factory.org>
+ * @author  Bernhard Schussek <bschussek@gmail.com>
+ *
+ * @api
+ */
+class Event
+{
+    /**
+     * @var Boolean Whether no further event listeners should be triggered
+     */
+    private $propagationStopped = false;
+
+    /**
+     * Returns whether further event listeners should be triggered.
+     *
+     * @see Event::stopPropagation
+     * @return Boolean Whether propagation was already stopped for this event.
+     *
+     * @api
+     */
+    public function isPropagationStopped()
+    {
+        return $this->propagationStopped;
+    }
+
+    /**
+     * Stops the propagation of the event to further event listeners.
+     *
+     * If multiple event listeners are connected to the same event, no
+     * further event listener will be triggered once any trigger calls
+     * stopPropagation().
+     *
+     * @api
+     */
+    public function stopPropagation()
+    {
+        $this->propagationStopped = true;
+    }
+}
diff --git a/core/vendor/Symfony/Component/EventDispatcher/EventDispatcher.php b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php
similarity index 86%
rename from core/vendor/Symfony/Component/EventDispatcher/EventDispatcher.php
rename to core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php
index 0c98301..c1b1600 100644
--- a/core/vendor/Symfony/Component/EventDispatcher/EventDispatcher.php
+++ b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php
@@ -23,7 +23,6 @@ namespace Symfony\Component\EventDispatcher;
  * @author  Bernhard Schussek <bschussek@gmail.com>
  * @author  Fabien Potencier <fabien@symfony.com>
  * @author  Jordi Boggiano <j.boggiano@seld.be>
- * @author  Jordan Alliot <jordan.alliot@gmail.com>
  *
  * @api
  */
@@ -47,9 +46,6 @@ class EventDispatcher implements EventDispatcherInterface
             $event = new Event();
         }
 
-        $event->setDispatcher($this);
-        $event->setName($eventName);
-
         $this->doDispatch($this->getListeners($eventName), $eventName, $event);
     }
 
@@ -120,12 +116,8 @@ class EventDispatcher implements EventDispatcherInterface
         foreach ($subscriber->getSubscribedEvents() as $eventName => $params) {
             if (is_string($params)) {
                 $this->addListener($eventName, array($subscriber, $params));
-            } elseif (is_string($params[0])) {
-                $this->addListener($eventName, array($subscriber, $params[0]), $params[1]);
             } else {
-                foreach ($params as $listener) {
-                    $this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0);
-                }
+                $this->addListener($eventName, array($subscriber, $params[0]), $params[1]);
             }
         }
     }
@@ -136,13 +128,7 @@ class EventDispatcher implements EventDispatcherInterface
     public function removeSubscriber(EventSubscriberInterface $subscriber)
     {
         foreach ($subscriber->getSubscribedEvents() as $eventName => $params) {
-            if (is_array($params) && is_array($params[0])) {
-                foreach ($params as $listener) {
-                    $this->removeListener($eventName, array($subscriber, $listener[0]));
-                }
-            } else {
-                $this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0]));
-            }
+            $this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0]));
         }
     }
 
diff --git a/core/vendor/Symfony/Component/EventDispatcher/EventDispatcherInterface.php b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcherInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/EventDispatcher/EventDispatcherInterface.php
rename to core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcherInterface.php
diff --git a/core/vendor/Symfony/Component/EventDispatcher/EventSubscriberInterface.php b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
similarity index 86%
rename from core/vendor/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
rename to core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
index 1e85b98..a9176e2 100644
--- a/core/vendor/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
+++ b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventSubscriberInterface.php
@@ -33,14 +33,11 @@ interface EventSubscriberInterface
      *
      *  * The method name to call (priority defaults to 0)
      *  * An array composed of the method name to call and the priority
-     *  * An array of arrays composed of the method names to call and respective
-     *    priorities, or 0 if unset
      *
      * For instance:
      *
      *  * array('eventName' => 'methodName')
      *  * array('eventName' => array('methodName', $priority))
-     *  * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
      *
      * @return array The event names to listen to
      *
diff --git a/core/vendor/Symfony/Component/ClassLoader/LICENSE b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/LICENSE
similarity index 100%
rename from core/vendor/Symfony/Component/ClassLoader/LICENSE
rename to core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/LICENSE
diff --git a/core/vendor/Symfony/Component/EventDispatcher/README.md b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/README.md
similarity index 100%
rename from core/vendor/Symfony/Component/EventDispatcher/README.md
rename to core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/README.md
diff --git a/core/vendor/Symfony/Component/EventDispatcher/composer.json b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/composer.json
similarity index 96%
rename from core/vendor/Symfony/Component/EventDispatcher/composer.json
rename to core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/composer.json
index b9ea291..4bc8e30 100644
--- a/core/vendor/Symfony/Component/EventDispatcher/composer.json
+++ b/core/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/composer.json
@@ -4,7 +4,6 @@
     "description": "Symfony EventDispatcher Component",
     "keywords": [],
     "homepage": "http://symfony.com",
-    "version": "2.1.0",
     "license": "MIT",
     "authors": [
         {
diff --git a/core/vendor/Symfony/Component/HttpFoundation/ApacheRequest.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ApacheRequest.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/ApacheRequest.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ApacheRequest.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/Cookie.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Cookie.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/Cookie.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Cookie.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/FileException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/FileException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/FileException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/FileException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/UploadException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/UploadException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/UploadException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/UploadException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/File.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/File.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/File.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/File.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/UploadedFile.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/UploadedFile.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/UploadedFile.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/UploadedFile.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/FileBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/FileBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/FileBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/FileBag.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/HeaderBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/HeaderBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/HeaderBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/HeaderBag.php
diff --git a/core/vendor/Symfony/Component/EventDispatcher/LICENSE b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/LICENSE
similarity index 100%
rename from core/vendor/Symfony/Component/EventDispatcher/LICENSE
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/LICENSE
diff --git a/core/vendor/Symfony/Component/HttpFoundation/ParameterBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ParameterBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/ParameterBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ParameterBag.php
diff --git a/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md
new file mode 100644
index 0000000..67823e7
--- /dev/null
+++ b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md
@@ -0,0 +1,36 @@
+HttpFoundation Component
+========================
+
+HttpFoundation defines an object-oriented layer for the HTTP specification.
+
+It provides an abstraction for requests, responses, uploaded files, cookies,
+sessions, ...
+
+In this example, we get a Request object from the current PHP global
+variables:
+
+    use Symfony\Component\HttpFoundation\Request;
+    use Symfony\Component\HttpFoundation\Response;
+
+    $request = Request::createFromGlobals();
+    echo $request->getPathInfo();
+
+You can also create a Request directly -- that's interesting for unit testing:
+
+    $request = Request::create('/?foo=bar', 'GET');
+    echo $request->getPathInfo();
+
+And here is how to create and send a Response:
+
+    $response = new Response('Not Found', 404, array('Content-Type' => 'text/plain'));
+    $response->send();
+
+The Request and the Response classes have many other methods that implement
+the HTTP specification.
+
+Resources
+---------
+
+Unit tests:
+
+https://github.com/symfony/symfony/tree/master/tests/Symfony/Tests/Component/HttpFoundation
diff --git a/core/vendor/Symfony/Component/HttpFoundation/RedirectResponse.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RedirectResponse.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/RedirectResponse.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RedirectResponse.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/Request.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Request.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/Request.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Request.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/RequestMatcher.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RequestMatcher.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/RequestMatcher.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RequestMatcher.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/RequestMatcherInterface.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RequestMatcherInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/RequestMatcherInterface.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RequestMatcherInterface.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/Response.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Response.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/Response.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Response.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/ResponseHeaderBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ResponseHeaderBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/ResponseHeaderBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ResponseHeaderBag.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/ServerBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ServerBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/ServerBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ServerBag.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/Session.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/Session.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/composer.json b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/composer.json
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/composer.json
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/composer.json
diff --git a/core/vendor/Symfony/Component/HttpKernel/Bundle/Bundle.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Bundle/Bundle.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Bundle/Bundle.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Bundle/Bundle.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Bundle/BundleInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Bundle/BundleInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Bundle/BundleInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Bundle/BundleInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmer.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmer.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmer.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmer.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php
similarity index 82%
rename from core/vendor/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php
index 478cdc9..2039f22 100644
--- a/core/vendor/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerInterface.php
@@ -16,9 +16,16 @@ namespace Symfony\Component\HttpKernel\CacheWarmer;
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-interface CacheWarmerInterface extends WarmableInterface
+interface CacheWarmerInterface
 {
     /**
+     * Warms up the cache.
+     *
+     * @param string $cacheDir The cache directory
+     */
+    function warmUp($cacheDir);
+
+    /**
      * Checks whether this warmer is optional or not.
      *
      * Optional warmers can be ignored on certain conditions.
diff --git a/core/vendor/Symfony/Component/HttpKernel/Client.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php
similarity index 95%
rename from core/vendor/Symfony/Component/HttpKernel/Client.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php
index ff93bf7..e9d39bf 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Client.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php
@@ -19,7 +19,6 @@ use Symfony\Component\BrowserKit\Response as DomResponse;
 use Symfony\Component\BrowserKit\Cookie as DomCookie;
 use Symfony\Component\BrowserKit\History;
 use Symfony\Component\BrowserKit\CookieJar;
-use Symfony\Component\HttpKernel\TerminableInterface;
 
 /**
  * Client simulates a browser and makes requests to a Kernel object.
@@ -58,13 +57,7 @@ class Client extends BaseClient
      */
     protected function doRequest($request)
     {
-        $response = $this->kernel->handle($request);
-
-        if ($this->kernel instanceof TerminableInterface) {
-            $this->kernel->terminate($request, $response);
-        }
-
-        return $response;
+        return $this->kernel->handle($request);
     }
 
     /**
diff --git a/core/vendor/Symfony/Component/HttpKernel/Config/FileLocator.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Config/FileLocator.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Config/FileLocator.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Config/FileLocator.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Controller/ControllerResolver.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Controller/ControllerResolver.php
similarity index 95%
rename from core/vendor/Symfony/Component/HttpKernel/Controller/ControllerResolver.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Controller/ControllerResolver.php
index d535c55..56d0d6f 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Controller/ControllerResolver.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Controller/ControllerResolver.php
@@ -68,12 +68,8 @@ class ControllerResolver implements ControllerResolverInterface
             return $controller;
         }
 
-        if (false === strpos($controller, ':')) {
-            if (method_exists($controller, '__invoke')) {
-                return new $controller;
-            } elseif (function_exists($controller)) {
-                return $controller;
-            }
+        if (false === strpos($controller, ':') && method_exists($controller, '__invoke')) {
+            return new $controller;
         }
 
         list($controller, $method) = $this->createController($controller);
diff --git a/core/vendor/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/ConfigDataCollector.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/DataCollector.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/DataCollector.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DataCollector/DataCollector.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/DataCollector.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/DataCollectorInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/DataCollectorInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DataCollector/DataCollectorInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/DataCollectorInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/EventDataCollector.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/EventDataCollector.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DataCollector/EventDataCollector.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/EventDataCollector.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/ExceptionDataCollector.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/ExceptionDataCollector.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DataCollector/ExceptionDataCollector.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/ExceptionDataCollector.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/LoggerDataCollector.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/MemoryDataCollector.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/MemoryDataCollector.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DataCollector/MemoryDataCollector.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/MemoryDataCollector.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php
similarity index 90%
rename from core/vendor/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php
index 54d9fac..8de33f5 100644
--- a/core/vendor/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/RequestDataCollector.php
@@ -41,14 +41,7 @@ class RequestDataCollector extends DataCollector
 
         $attributes = array();
         foreach ($request->attributes->all() as $key => $value) {
-            if (is_object($value)) {
-                $attributes[$key] = sprintf('Object(%s)', get_class($value));
-                if (is_callable(array($value, '__toString'))) {
-                    $attributes[$key] .= sprintf(' = %s', (string) $value);
-                }
-            } else {
-                $attributes[$key] = $value;
-            }
+            $attributes[$key] = is_object($value) ? sprintf('Object(%s)', get_class($value)) : $value;
         }
 
         $content = null;
@@ -72,15 +65,9 @@ class RequestDataCollector extends DataCollector
             'request_attributes' => $attributes,
             'response_headers'   => $responseHeaders,
             'session_attributes' => $request->hasSession() ? $request->getSession()->all() : array(),
-            'path_info'          => $request->getPathInfo(),
         );
     }
 
-    public function getPathInfo()
-    {
-        return $this->data['path_info'];
-    }
-
     public function getRequestRequest()
     {
         return new ParameterBag($this->data['request_request']);
diff --git a/core/vendor/Symfony/Component/HttpKernel/Debug/ErrorHandler.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Debug/ErrorHandler.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Debug/ErrorHandler.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Debug/ErrorHandler.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Debug/ExceptionHandler.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Debug/ExceptionHandler.php
similarity index 72%
rename from core/vendor/Symfony/Component/HttpKernel/Debug/ExceptionHandler.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Debug/ExceptionHandler.php
index a9da249..da51170 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Debug/ExceptionHandler.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Debug/ExceptionHandler.php
@@ -13,10 +13,7 @@ namespace Symfony\Component\HttpKernel\Debug;
 
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\Exception\FlattenException;
-
-if (!defined('ENT_SUBSTITUTE')) {
-    define('ENT_SUBSTITUTE', 8);
-}
+use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
 
 /**
  * ExceptionHandler converts an exception to a Response object.
@@ -32,12 +29,10 @@ if (!defined('ENT_SUBSTITUTE')) {
 class ExceptionHandler
 {
     private $debug;
-    private $charset;
 
-    public function __construct($debug = true, $charset = 'UTF-8')
+    public function __construct($debug = true)
     {
         $this->debug = $debug;
-        $this->charset = $charset;
     }
 
     /**
@@ -67,20 +62,19 @@ class ExceptionHandler
     /**
      * Creates the error Response associated with the given Exception.
      *
-     * @param \Exception|FlattenException $exception An \Exception instance
+     * @param \Exception $exception An \Exception instance
      *
      * @return Response A Response instance
      */
-    public function createResponse($exception)
+    public function createResponse(\Exception $exception)
     {
         $content = '';
         $title = '';
         try {
-            if (!$exception instanceof FlattenException) {
-                $exception = FlattenException::create($exception);
-            }
+            $code = $exception instanceof HttpExceptionInterface ? $exception->getStatusCode() : 500;
+            $exception = FlattenException::create($exception);
 
-            switch ($exception->getStatusCode()) {
+            switch($code) {
                 case 404:
                     $title = 'Sorry, the page you are looking for could not be found.';
                     break;
@@ -100,7 +94,7 @@ class ExceptionHandler
             }
         }
 
-        return new Response($this->decorate($content, $title), $exception->getStatusCode());
+        return new Response($this->decorate($content, $title), $code);
     }
 
     private function getContent($exception)
@@ -114,32 +108,19 @@ class ExceptionHandler
             $total = $count + 1;
             $class = $this->abbrClass($e['class']);
             $message = nl2br($e['message']);
-            $content .= sprintf(<<<EOF
-<div class="block_exception clear_fix">
-    <h2><span>%d/%d</span> %s: %s</h2>
-</div>
-<div class="block">
-    <ol class="traces list_exception">
-
-EOF
-                , $ind, $total, $class, $message);
+            $content .= "<div class=\"block_exception clear_fix\"><h2><span>$ind/$total</span> $class: $message</h2></div><div class=\"block\"><ol class=\"traces list_exception\">";
             foreach ($e['trace'] as $i => $trace) {
-                $content .= '       <li>';
+                $content .= '<li>';
                 if ($trace['function']) {
-                    $content .= sprintf('at %s%s%s(%s)', $this->abbrClass($trace['class']), $trace['type'], $trace['function'], $this->formatArgs($trace['args']));
+                    $content .= sprintf('at %s%s%s()', $this->abbrClass($trace['class']), $trace['type'], $trace['function']);
                 }
                 if (isset($trace['file']) && isset($trace['line'])) {
-                    if ($linkFormat = ini_get('xdebug.file_link_format')) {
-                        $link = str_replace(array('%f', '%l'), array($trace['file'], $trace['line']), $linkFormat);
-                        $content .= sprintf(' in <a href="%s" title="Go to source">%s line %s</a>', $link, $trace['file'], $trace['line']);
-                    } else {
-                        $content .= sprintf(' in %s line %s', $trace['file'], $trace['line']);
-                    }
+                    $content .= sprintf(' in %s line %s', $trace['file'], $trace['line']);
                 }
-                $content .= "</li>\n";
+                $content .= '</li>';
             }
 
-            $content .= "    </ol>\n</div>\n";
+            $content .= '</ol></div>';
         }
 
         return $content;
@@ -214,7 +195,7 @@ EOF
     <body>
         <div id="content" class="sf-exceptionreset">
             <h1>$title</h1>
-$content
+            $content
         </div>
     </body>
 </html>
@@ -227,37 +208,4 @@ EOF;
 
         return sprintf("<abbr title=\"%s\">%s</abbr>", $class, array_pop($parts));
     }
-
-    /**
-     * Formats an array as a string.
-     *
-     * @param array $args The argument array
-     *
-     * @return string
-     */
-    public function formatArgs(array $args)
-    {
-        $result = array();
-        foreach ($args as $key => $item) {
-            if ('object' === $item[0]) {
-                $formattedValue = sprintf("<em>object</em>(%s)", $this->abbrClass($item[1]));
-            } elseif ('array' === $item[0]) {
-                $formattedValue = sprintf("<em>array</em>(%s)", is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]);
-            } elseif ('string'  === $item[0]) {
-                $formattedValue = sprintf("'%s'", htmlspecialchars($item[1], ENT_QUOTES | ENT_SUBSTITUTE, $this->charset));
-            } elseif ('null' === $item[0]) {
-                $formattedValue = '<em>null</em>';
-            } elseif ('boolean' === $item[0]) {
-                $formattedValue = '<em>'.strtolower(var_export($item[1], true)).'</em>';
-            } elseif ('resource' === $item[0]) {
-                $formattedValue = '<em>resource</em>';
-            } else {
-                $formattedValue = str_replace("\n", '', var_export(htmlspecialchars((string) $item[1], ENT_QUOTES | ENT_SUBSTITUTE, $this->charset), true));
-            }
-
-            $result[] = is_int($key) ? $formattedValue : sprintf("'%s' => %s", $key, $formattedValue);
-        }
-
-        return implode(', ', $result);
-    }
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcherInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcherInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcherInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcherInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/DependencyInjection/Extension.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/Extension.php
similarity index 78%
rename from core/vendor/Symfony/Component/HttpKernel/DependencyInjection/Extension.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/Extension.php
index dcdf032..5689269 100644
--- a/core/vendor/Symfony/Component/HttpKernel/DependencyInjection/Extension.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/Extension.php
@@ -5,8 +5,6 @@ namespace Symfony\Component\HttpKernel\DependencyInjection;
 use Symfony\Component\Config\Definition\Processor;
 use Symfony\Component\Config\Definition\ConfigurationInterface;
 use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
-use Symfony\Component\DependencyInjection\Extension\ConfigurationExtensionInterface;
-use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Container;
 
 /*
@@ -23,7 +21,7 @@ use Symfony\Component\DependencyInjection\Container;
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-abstract class Extension implements ExtensionInterface, ConfigurationExtensionInterface
+abstract class Extension implements ExtensionInterface
 {
     private $classes = array();
 
@@ -102,24 +100,4 @@ abstract class Extension implements ExtensionInterface, ConfigurationExtensionIn
 
         return $processor->processConfiguration($configuration, $configs);
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function getConfiguration(array $config, ContainerBuilder $container)
-    {
-        $reflected = new \ReflectionClass($this);
-        $namespace = $reflected->getNamespaceName();
-
-        $class = $namespace . '\\Configuration';
-        if (class_exists($class)) {
-            if (!method_exists($class, '__construct')) {
-                $configuration = new $class();
-
-                return $configuration;
-            }
-        }
-
-        return null;
-    }
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Event/FilterControllerEvent.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/FilterControllerEvent.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Event/FilterControllerEvent.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/FilterControllerEvent.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Event/FilterResponseEvent.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/FilterResponseEvent.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Event/FilterResponseEvent.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/FilterResponseEvent.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Event/GetResponseEvent.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/GetResponseEvent.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Event/GetResponseEvent.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/GetResponseEvent.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Event/GetResponseForControllerResultEvent.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/GetResponseForControllerResultEvent.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Event/GetResponseForControllerResultEvent.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/GetResponseForControllerResultEvent.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Event/GetResponseForExceptionEvent.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/GetResponseForExceptionEvent.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Event/GetResponseForExceptionEvent.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/GetResponseForExceptionEvent.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Event/KernelEvent.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/KernelEvent.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Event/KernelEvent.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Event/KernelEvent.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/EventListener/EsiListener.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/EsiListener.php
similarity index 79%
rename from core/vendor/Symfony/Component/HttpKernel/EventListener/EsiListener.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/EsiListener.php
index d48d740..d05153e 100644
--- a/core/vendor/Symfony/Component/HttpKernel/EventListener/EsiListener.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/EsiListener.php
@@ -14,16 +14,14 @@ namespace Symfony\Component\HttpKernel\EventListener;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
 use Symfony\Component\HttpKernel\HttpCache\Esi;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * EsiListener adds a Surrogate-Control HTTP header when the Response needs to be parsed for ESI.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class EsiListener implements EventSubscriberInterface
+class EsiListener
 {
     private $i;
     private $esi;
@@ -51,11 +49,4 @@ class EsiListener implements EventSubscriberInterface
 
         $this->esi->addSurrogateControl($event->getResponse());
     }
-
-    static public function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::RESPONSE => 'onKernelResponse',
-        );
-    }
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
similarity index 91%
rename from core/vendor/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
index 0577dcf..01418da 100644
--- a/core/vendor/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php
@@ -14,18 +14,16 @@ namespace Symfony\Component\HttpKernel\EventListener;
 use Symfony\Component\HttpKernel\Log\LoggerInterface;
 use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 use Symfony\Component\HttpKernel\Exception\FlattenException;
 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * ExceptionListener.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class ExceptionListener implements EventSubscriberInterface
+class ExceptionListener
 {
     private $controller;
     private $logger;
@@ -102,11 +100,4 @@ class ExceptionListener implements EventSubscriberInterface
 
         $handling = false;
     }
-
-    static public function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::EXCEPTION => array('onKernelException', -128),
-        );
-    }
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php
similarity index 87%
rename from core/vendor/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php
index aa78dba..fa0f136 100644
--- a/core/vendor/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php
@@ -15,17 +15,15 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
 use Symfony\Component\HttpKernel\Event\GetResponseEvent;
 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
-use Symfony\Component\HttpKernel\KernelEvents;
 use Symfony\Component\HttpKernel\Profiler\Profiler;
 use Symfony\Component\HttpFoundation\RequestMatcherInterface;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * ProfilerListener collects data for the current request by listening to the onKernelResponse event.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class ProfilerListener implements EventSubscriberInterface
+class ProfilerListener
 {
     protected $profiler;
     protected $matcher;
@@ -125,16 +123,4 @@ class ProfilerListener implements EventSubscriberInterface
 
         $this->profiler->saveProfile($profile);
     }
-
-    static public function getSubscribedEvents()
-    {
-        return array(
-            // kernel.request must be registered as early as possible to not break
-            // when an exception is thrown in any other kernel.request listener
-            KernelEvents::REQUEST => array('onKernelRequest', 1024),
-
-            KernelEvents::RESPONSE => array('onKernelResponse', -100),
-            KernelEvents::EXCEPTION => 'onKernelException',
-        );
-    }
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/EventListener/ResponseListener.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ResponseListener.php
similarity index 57%
rename from core/vendor/Symfony/Component/HttpKernel/EventListener/ResponseListener.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ResponseListener.php
index d047b1f..51d6d46 100644
--- a/core/vendor/Symfony/Component/HttpKernel/EventListener/ResponseListener.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/ResponseListener.php
@@ -12,16 +12,15 @@
 namespace Symfony\Component\HttpKernel\EventListener;
 
 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
+use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * ResponseListener fixes the Response headers based on the Request.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class ResponseListener implements EventSubscriberInterface
+class ResponseListener
 {
     private $charset;
 
@@ -33,27 +32,37 @@ class ResponseListener implements EventSubscriberInterface
     /**
      * Filters the Response.
      *
-     * @param FilterResponseEvent $event A FilterResponseEvent instance
+     * @param FilterResponseEvent $event    A FilterResponseEvent instance
      */
     public function onKernelResponse(FilterResponseEvent $event)
     {
+        $request = $event->getRequest();
+        $response = $event->getResponse();
+
+        if ('HEAD' === $request->getMethod()) {
+            // cf. RFC2616 14.13
+            $length = $response->headers->get('Content-Length');
+            $response->setContent('');
+            if ($length) {
+                $response->headers->set('Content-Length', $length);
+            }
+        }
+
         if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
             return;
         }
 
-        $response = $event->getResponse();
-
         if (null === $response->getCharset()) {
             $response->setCharset($this->charset);
         }
 
-        $response->prepare($event->getRequest());
-    }
+        if ($response->headers->has('Content-Type')) {
+            return;
+        }
 
-    static public function getSubscribedEvents()
-    {
-        return array(
-            KernelEvents::RESPONSE => 'onKernelResponse',
-        );
+        $format = $request->getRequestFormat();
+        if ((null !== $format) && $mimeType = $request->getMimeType($format)) {
+            $response->headers->set('Content-Type', $mimeType);
+        }
     }
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/Exception/AccessDeniedHttpException.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/AccessDeniedHttpException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Exception/AccessDeniedHttpException.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/AccessDeniedHttpException.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Exception/FlattenException.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/FlattenException.php
similarity index 96%
rename from core/vendor/Symfony/Component/HttpKernel/Exception/FlattenException.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/FlattenException.php
index c48606e..0c1844c 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Exception/FlattenException.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/FlattenException.php
@@ -28,16 +28,11 @@ class FlattenException
     private $statusCode;
     private $headers;
 
-    static public function create(\Exception $exception, $statusCode = null, array $headers = array())
+    static public function create(\Exception $exception, $statusCode = 500, array $headers = array())
     {
         $e = new static();
         $e->setMessage($exception->getMessage());
         $e->setCode($exception->getCode());
-
-        if (null === $statusCode) {
-            $statusCode = $exception instanceof HttpExceptionInterface ? $exception->getStatusCode() : 500;
-        }
-
         $e->setStatusCode($statusCode);
         $e->setHeaders($headers);
         $e->setTrace($exception->getTrace(), $exception->getFile(), $exception->getLine());
diff --git a/core/vendor/Symfony/Component/HttpKernel/Exception/HttpException.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/HttpException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Exception/HttpException.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/HttpException.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Exception/HttpExceptionInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/HttpExceptionInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Exception/HttpExceptionInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/HttpExceptionInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Exception/MethodNotAllowedHttpException.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/MethodNotAllowedHttpException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Exception/MethodNotAllowedHttpException.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/MethodNotAllowedHttpException.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Exception/NotFoundHttpException.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/NotFoundHttpException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Exception/NotFoundHttpException.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/NotFoundHttpException.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/HttpCache/Esi.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/Esi.php
similarity index 97%
rename from core/vendor/Symfony/Component/HttpKernel/HttpCache/Esi.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/Esi.php
index e1a0e6a..74c01fe 100644
--- a/core/vendor/Symfony/Component/HttpKernel/HttpCache/Esi.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/Esi.php
@@ -155,8 +155,8 @@ class Esi
         // we don't use a proper XML parser here as we can have ESI tags in a plain text response
         $content = $response->getContent();
         $content = str_replace(array('<?', '<%'), array('<?php echo "<?"; ?>', '<?php echo "<%"; ?>'), $content);
-        $content = preg_replace_callback('#<esi\:include\s+(.*?)\s*(?:/|</esi\:include)>#', array($this, 'handleEsiIncludeTag'), $content);
-        $content = preg_replace('#<esi\:comment[^>]*(?:/|</esi\:comment)>#', '', $content);
+        $content = preg_replace_callback('#<esi\:include\s+(.*?)\s*/>#', array($this, 'handleEsiIncludeTag'), $content);
+        $content = preg_replace('#<esi\:comment[^>]*/>#', '', $content);
         $content = preg_replace('#<esi\:remove>.*?</esi\:remove>#', '', $content);
 
         $response->setContent($content);
diff --git a/core/vendor/Symfony/Component/HttpKernel/HttpCache/EsiResponseCacheStrategy.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/EsiResponseCacheStrategy.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/HttpCache/EsiResponseCacheStrategy.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/EsiResponseCacheStrategy.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/HttpCache/EsiResponseCacheStrategyInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/EsiResponseCacheStrategyInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/HttpCache/EsiResponseCacheStrategyInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/EsiResponseCacheStrategyInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/HttpCache/HttpCache.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php
similarity index 97%
rename from core/vendor/Symfony/Component/HttpKernel/HttpCache/HttpCache.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php
index e0a3d12..a0e5c12 100644
--- a/core/vendor/Symfony/Component/HttpKernel/HttpCache/HttpCache.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php
@@ -16,7 +16,6 @@
 namespace Symfony\Component\HttpKernel\HttpCache;
 
 use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\HttpKernel\TerminableInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 
@@ -27,7 +26,7 @@ use Symfony\Component\HttpFoundation\Response;
  *
  * @api
  */
-class HttpCache implements HttpKernelInterface, TerminableInterface
+class HttpCache implements HttpKernelInterface
 {
     private $kernel;
     private $store;
@@ -211,24 +210,12 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
             }
         }
 
-        $response->prepare($request);
+        $response->prepare();
 
         return $response;
     }
 
     /**
-     * {@inheritdoc}
-     *
-     * @api
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        if ($this->getKernel() instanceof TerminableInterface) {
-            $this->getKernel()->terminate($request, $response);
-        }
-    }
-
-    /**
      * Forwards the Request to the backend without storing the Response in the cache.
      *
      * @param Request $request A Request instance
@@ -515,7 +502,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
 
             // wait for the lock to be released
             $wait = 0;
-            while (is_file($lock) && $wait < 5000000) {
+            while (file_exists($lock) && $wait < 5000000) {
                 usleep($wait += 50000);
             }
 
diff --git a/core/vendor/Symfony/Component/HttpKernel/HttpCache/Store.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/Store.php
similarity index 97%
rename from core/vendor/Symfony/Component/HttpKernel/HttpCache/Store.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/Store.php
index 6818bd3..615b36e 100644
--- a/core/vendor/Symfony/Component/HttpKernel/HttpCache/Store.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/Store.php
@@ -122,7 +122,7 @@ class Store implements StoreInterface
         }
 
         list($req, $headers) = $match;
-        if (is_file($body = $this->getPath($headers['x-content-digest'][0]))) {
+        if (file_exists($body = $this->getPath($headers['x-content-digest'][0]))) {
             return $this->restoreResponse($headers, $body);
         }
 
@@ -281,7 +281,7 @@ class Store implements StoreInterface
      */
     public function purge($url)
     {
-        if (is_file($path = $this->getPath($this->getCacheKey(Request::create($url))))) {
+        if (file_exists($path = $this->getPath($this->getCacheKey(Request::create($url))))) {
             unlink($path);
 
             return true;
@@ -301,7 +301,7 @@ class Store implements StoreInterface
     {
         $path = $this->getPath($key);
 
-        return is_file($path) ? file_get_contents($path) : false;
+        return file_exists($path) ? file_get_contents($path) : false;
     }
 
     /**
diff --git a/core/vendor/Symfony/Component/HttpKernel/HttpCache/StoreInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/StoreInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/HttpCache/StoreInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/StoreInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/HttpKernel.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php
similarity index 95%
rename from core/vendor/Symfony/Component/HttpKernel/HttpKernel.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php
index 3327f4f..e7d52ff 100644
--- a/core/vendor/Symfony/Component/HttpKernel/HttpKernel.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernel.php
@@ -18,7 +18,6 @@ use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
 use Symfony\Component\HttpKernel\Event\GetResponseEvent;
 use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\HttpKernel\Event\PostResponseEvent;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@@ -30,7 +29,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  *
  * @api
  */
-class HttpKernel implements HttpKernelInterface, TerminableInterface
+class HttpKernel implements HttpKernelInterface
 {
     private $dispatcher;
     private $resolver;
@@ -80,16 +79,6 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
     }
 
     /**
-     * {@inheritdoc}
-     *
-     * @api
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        $this->dispatcher->dispatch(KernelEvents::TERMINATE, new PostResponseEvent($this, $request, $response));
-    }
-
-    /**
      * Handles a request to convert it to a response.
      *
      * Exceptions are not caught.
diff --git a/core/vendor/Symfony/Component/HttpKernel/HttpKernelInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernelInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/HttpKernelInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpKernelInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Kernel.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Kernel.php
similarity index 97%
rename from core/vendor/Symfony/Component/HttpKernel/Kernel.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Kernel.php
index 05f895f..4c1ba3c 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Kernel.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Kernel.php
@@ -21,7 +21,6 @@ use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
 use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
 use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 use Symfony\Component\HttpKernel\Bundle\BundleInterface;
 use Symfony\Component\HttpKernel\Config\FileLocator;
@@ -45,7 +44,7 @@ use Symfony\Component\ClassLoader\DebugUniversalClassLoader;
  *
  * @api
  */
-abstract class Kernel implements KernelInterface, TerminableInterface
+abstract class Kernel implements KernelInterface
 {
     protected $bundles;
     protected $bundleMap;
@@ -58,7 +57,7 @@ abstract class Kernel implements KernelInterface, TerminableInterface
     protected $startTime;
     protected $classes;
 
-    const VERSION = '2.1.0-DEV';
+    const VERSION = '2.0.10';
 
     /**
      * Constructor.
@@ -136,22 +135,6 @@ abstract class Kernel implements KernelInterface, TerminableInterface
     }
 
     /**
-     * {@inheritdoc}
-     *
-     * @api
-     */
-    public function terminate(Request $request, Response $response)
-    {
-        if (false === $this->booted) {
-            return;
-        }
-
-        if ($this->getHttpKernel() instanceof TerminableInterface) {
-            $this->getHttpKernel()->terminate($request, $response);
-        }
-    }
-
-    /**
      * Shutdowns the kernel.
      *
      * This method is mainly useful when doing functional testing.
@@ -413,7 +396,7 @@ abstract class Kernel implements KernelInterface, TerminableInterface
      */
     public function loadClassCache($name = 'classes', $extension = '.php')
     {
-        if (!$this->booted && is_file($this->getCacheDir().'/classes.map')) {
+        if (!$this->booted && file_exists($this->getCacheDir().'/classes.map')) {
             ClassCollectionLoader::load(include($this->getCacheDir().'/classes.map'), $this->getCacheDir(), $name, $this->debug, false, $extension);
         }
     }
@@ -642,6 +625,8 @@ abstract class Kernel implements KernelInterface, TerminableInterface
         $container = new ContainerBuilder(new ParameterBag($this->getKernelParameters()));
         $extensions = array();
         foreach ($this->bundles as $bundle) {
+            $bundle->build($container);
+
             if ($extension = $bundle->getContainerExtension()) {
                 $container->registerExtension($extension);
                 $extensions[] = $extension->getAlias();
@@ -651,10 +636,6 @@ abstract class Kernel implements KernelInterface, TerminableInterface
                 $container->addObjectResource($bundle);
             }
         }
-        foreach ($this->bundles as $bundle) {
-            $bundle->build($container);
-        }
-
         $container->addObjectResource($this);
 
         // ensure these extensions are implicitly loaded
diff --git a/core/vendor/Symfony/Component/HttpKernel/KernelEvents.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/KernelEvents.php
similarity index 88%
rename from core/vendor/Symfony/Component/HttpKernel/KernelEvents.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/KernelEvents.php
index 1594d3e..f5a5c55 100644
--- a/core/vendor/Symfony/Component/HttpKernel/KernelEvents.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/KernelEvents.php
@@ -91,15 +91,4 @@ final class KernelEvents
      * @api
      */
     const RESPONSE = 'kernel.response';
-
-    /**
-     * The TERMINATE event occurs once a reponse was sent
-     *
-     * This event allows you to run expensive post-response jobs.
-     * The event listener method receives a
-     * Symfony\Component\HttpKernel\Event\PostResponseEvent instance.
-     *
-     * @var string
-     */
-    const TERMINATE = 'kernel.terminate';
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/KernelInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/KernelInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/KernelInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/KernelInterface.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/LICENSE b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/LICENSE
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/LICENSE
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/LICENSE
diff --git a/core/vendor/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Log/LoggerInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Log/LoggerInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Log/LoggerInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Log/LoggerInterface.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Log/NullLogger.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Log/NullLogger.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/Log/NullLogger.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Log/NullLogger.php
diff --git a/core/vendor/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php
similarity index 82%
rename from core/vendor/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php
index 8530a2b..d40608d 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/MysqlProfilerStorage.php
@@ -33,7 +33,7 @@ class MysqlProfilerStorage extends PdoProfilerStorage
             }
 
             $db = new \PDO($this->dsn, $this->username, $this->password);
-            $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token VARCHAR(255) PRIMARY KEY, data LONGTEXT, ip VARCHAR(64), method VARCHAR(6), url VARCHAR(255), time INTEGER UNSIGNED, parent VARCHAR(255), created_at INTEGER UNSIGNED, KEY (created_at), KEY (ip), KEY (method), KEY (url), KEY (parent))');
+            $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token VARCHAR(255) PRIMARY KEY, data LONGTEXT, ip VARCHAR(64), url VARCHAR(255), time INTEGER UNSIGNED, parent VARCHAR(255), created_at INTEGER UNSIGNED, KEY (created_at), KEY (ip), KEY (url), KEY (parent))');
 
             $this->db = $db;
         }
@@ -44,7 +44,7 @@ class MysqlProfilerStorage extends PdoProfilerStorage
     /**
      * {@inheritdoc}
      */
-    protected function buildCriteria($ip, $url, $limit, $method)
+    protected function buildCriteria($ip, $url, $limit)
     {
         $criteria = array();
         $args = array();
@@ -59,11 +59,6 @@ class MysqlProfilerStorage extends PdoProfilerStorage
             $args[':url'] = '%'.addcslashes($url, '%_\\').'%';
         }
 
-        if ($method) {
-            $criteria[] = 'method = :method';
-            $args[':method'] = $method;
-        }
-
         return array($criteria, $args);
     }
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php
similarity index 83%
rename from core/vendor/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php
index c87b871..118abba 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/PdoProfilerStorage.php
@@ -45,14 +45,14 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
     /**
      * {@inheritdoc}
      */
-    public function find($ip, $url, $limit, $method)
+    public function find($ip, $url, $limit)
     {
-        list($criteria, $args) = $this->buildCriteria($ip, $url, $limit, $method);
+        list($criteria, $args) = $this->buildCriteria($ip, $url, $limit);
 
         $criteria = $criteria ? 'WHERE '.implode(' AND ', $criteria) : '';
 
         $db = $this->initDb();
-        $tokens = $this->fetch($db, 'SELECT token, ip, method, url, time, parent FROM sf_profiler_data '.$criteria.' ORDER BY time DESC LIMIT '.((integer) $limit), $args);
+        $tokens = $this->fetch($db, 'SELECT token, ip, url, time, parent FROM sf_profiler_data '.$criteria.' ORDER BY time DESC LIMIT '.((integer) $limit), $args);
         $this->close($db);
 
         return $tokens;
@@ -65,7 +65,7 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
     {
         $db = $this->initDb();
         $args = array(':token' => $token);
-        $data = $this->fetch($db, 'SELECT data, parent, ip, method, url, time FROM sf_profiler_data WHERE token = :token LIMIT 1', $args);
+        $data = $this->fetch($db, 'SELECT data, parent, ip, url, time FROM sf_profiler_data WHERE token = :token LIMIT 1', $args);
         $this->close($db);
         if (isset($data[0]['data'])) {
             return $this->createProfileFromData($token, $data[0]);
@@ -82,10 +82,9 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
         $db = $this->initDb();
         $args = array(
             ':token'      => $profile->getToken(),
-            ':parent'     => $profile->getParentToken(),
+            ':parent'     => $profile->getParent() ? $profile->getParent()->getToken() : '',
             ':data'       => base64_encode(serialize($profile->getCollectors())),
             ':ip'         => $profile->getIp(),
-            ':method'     => $profile->getMethod(),
             ':url'        => $profile->getUrl(),
             ':time'       => $profile->getTime(),
             ':created_at' => time(),
@@ -93,7 +92,7 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
 
         if ($this->read($profile->getToken())) {
             try {
-                $this->exec($db, 'UPDATE sf_profiler_data SET parent = :parent, data = :data, ip = :ip, method = :method, url = :url, time = :time, created_at = :created_at WHERE token = :token', $args);
+                $this->exec($db, 'UPDATE sf_profiler_data SET parent = :parent, data = :data, ip = :ip, url = :url, time = :time, created_at = :created_at WHERE token = :token', $args);
                 $this->cleanup();
                 $status = true;
             } catch (\Exception $e) {
@@ -101,7 +100,7 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
             }
         } else {
             try {
-                $this->exec($db, 'INSERT INTO sf_profiler_data (token, parent, data, ip, method, url, time, created_at) VALUES (:token, :parent, :data, :ip, :method, :url, :time, :created_at)', $args);
+                $this->exec($db, 'INSERT INTO sf_profiler_data (token, parent, data, ip, url, time, created_at) VALUES (:token, :parent, :data, :ip, :url, :time, :created_at)', $args);
                 $this->cleanup();
                 $status = true;
             } catch (\Exception $e) {
@@ -130,11 +129,10 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
      * @param string $ip    The IP
      * @param string $url   The URL
      * @param string $limit The maximum number of tokens to return
-     * @param string $method The request method
      *
      * @return array An array with (criteria, args)
      */
-    abstract protected function buildCriteria($ip, $url, $limit, $method);
+    abstract protected function buildCriteria($ip, $url, $limit);
 
     /**
      * Initializes the database
@@ -199,12 +197,11 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
     {
         $profile = new Profile($token);
         $profile->setIp($data['ip']);
-        $profile->setMethod($data['method']);
         $profile->setUrl($data['url']);
         $profile->setTime($data['time']);
         $profile->setCollectors(unserialize(base64_decode($data['data'])));
 
-        if (!$parent && !empty($data['parent'])) {
+        if (!$parent && isset($data['parent']) && $data['parent']) {
             $parent = $this->read($data['parent']);
         }
 
@@ -221,14 +218,13 @@ abstract class PdoProfilerStorage implements ProfilerStorageInterface
      * Reads the child profiles for the given token.
      *
      * @param string $token The parent token
-     * @param string $parent The parent instance
      *
      * @return array An array of Profile instance
      */
     protected function readChildren($token, $parent)
     {
         $db = $this->initDb();
-        $data = $this->fetch($db, 'SELECT token, data, ip, method, url, time FROM sf_profiler_data WHERE parent = :token', array(':token' => $token));
+        $data = $this->fetch($db, 'SELECT token, data, ip, url, time FROM sf_profiler_data WHERE parent = :token', array(':token' => $token));
         $this->close($db);
 
         if (!$data) {
diff --git a/core/vendor/Symfony/Component/HttpKernel/Profiler/Profile.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/Profile.php
similarity index 79%
rename from core/vendor/Symfony/Component/HttpKernel/Profiler/Profile.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/Profile.php
index bed24f1..1089390 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Profiler/Profile.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/Profile.php
@@ -18,22 +18,16 @@ use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class Profile
+class Profile implements \Serializable
 {
     private $token;
     private $collectors;
     private $ip;
-    private $method;
     private $url;
     private $time;
     private $parent;
     private $children;
 
-    /**
-     * Constructor.
-     *
-     * @param string $token The token
-     */
     public function __construct($token)
     {
         $this->token = $token;
@@ -72,7 +66,7 @@ class Profile
     }
 
     /**
-     * Returns the parent profile.
+     * Returns the parent token.
      *
      * @return Profile The parent profile
      */
@@ -82,16 +76,6 @@ class Profile
     }
 
     /**
-     * Returns the parent token.
-     *
-     * @return null|string The parent token
-     */
-    public function getParentToken()
-    {
-        return $this->parent ? $this->parent->getToken() : null;
-    }
-
-    /**
      * Returns the IP.
      *
      * @return string The IP
@@ -107,21 +91,6 @@ class Profile
     }
 
     /**
-     * Returns the request method.
-     *
-     * @return string The request method
-     */
-    public function getMethod()
-    {
-        return $this->method;
-    }
-
-    public function setMethod($method)
-    {
-        $this->method = $method;
-    }
-
-    /**
      * Returns the URL.
      *
      * @return string The URL
@@ -169,15 +138,9 @@ class Profile
         }
     }
 
-    /**
-     * Adds the child token
-     *
-     * @param Profile $child The child Profile
-     */
     public function addChild(Profile $child)
     {
         $this->children[] = $child;
-        $child->setParent($this);
     }
 
     public function getCollector($name)
@@ -212,8 +175,13 @@ class Profile
         return isset($this->collectors[$name]);
     }
 
-    public function __sleep()
+    public function serialize()
+    {
+        return serialize(array($this->token, $this->parent, $this->children, $this->collectors, $this->ip, $this->url, $this->time));
+    }
+
+    public function unserialize($data)
     {
-        return array('token', 'parent', 'children', 'collectors', 'ip', 'method', 'url', 'time');
+        list($this->token, $this->parent, $this->children, $this->collectors, $this->ip, $this->url, $this->time) = unserialize($data);
     }
 }
diff --git a/core/vendor/Symfony/Component/HttpKernel/Profiler/Profiler.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/Profiler.php
similarity index 92%
rename from core/vendor/Symfony/Component/HttpKernel/Profiler/Profiler.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/Profiler.php
index 966111c..7a5f947 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Profiler/Profiler.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/Profiler.php
@@ -106,8 +106,6 @@ class Profiler
     /**
      * Exports the current profiler data.
      *
-     * @param Profile $profile A Profile instance
-     *
      * @return string The exported data
      */
     public function export(Profile $profile)
@@ -138,16 +136,15 @@ class Profiler
     /**
      * Finds profiler tokens for the given criteria.
      *
-     * @param string $ip     The IP
-     * @param string $url    The URL
-     * @param string $limit  The maximum number of tokens to return
-     * @param string $method The request method
+     * @param string $ip    The IP
+     * @param string $url   The URL
+     * @param string $limit The maximum number of tokens to return
      *
      * @return array An array of tokens
      */
-    public function find($ip, $url, $limit, $method)
+    public function find($ip, $url, $limit)
     {
-        return $this->storage->find($ip, $url, $limit, $method);
+        return $this->storage->find($ip, $url, $limit);
     }
 
     /**
@@ -169,11 +166,11 @@ class Profiler
         $profile->setTime(time());
         $profile->setUrl($request->getUri());
         $profile->setIp($request->server->get('REMOTE_ADDR'));
-        $profile->setMethod($request->getMethod());
 
         $response->headers->set('X-Debug-Token', $profile->getToken());
 
-        foreach ($this->collectors as $collector) {
+        $collectors = array();
+        foreach ($this->collectors as $name => $collector) {
             $collector->collect($request, $response, $exception);
 
             // forces collectors to become "read/only" (they loose their object dependencies)
@@ -220,8 +217,6 @@ class Profiler
      * Returns true if a Collector for the given name exists.
      *
      * @param string $name A collector name
-     *
-     * @return Boolean
      */
     public function has($name)
     {
diff --git a/core/vendor/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php
similarity index 80%
rename from core/vendor/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php
index db608ea..f4209a3 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/ProfilerStorageInterface.php
@@ -21,14 +21,13 @@ interface ProfilerStorageInterface
     /**
      * Finds profiler tokens for the given criteria.
      *
-     * @param string $ip     The IP
-     * @param string $url    The URL
-     * @param string $limit  The maximum number of tokens to return
-     * @param string $method The request method
+     * @param string $ip    The IP
+     * @param string $url   The URL
+     * @param string $limit The maximum number of tokens to return
      *
      * @return array An array of tokens
      */
-    function find($ip, $url, $limit, $method);
+    function find($ip, $url, $limit);
 
     /**
      * Reads data associated with the given token.
@@ -42,7 +41,7 @@ interface ProfilerStorageInterface
     function read($token);
 
     /**
-     * Saves a Profile.
+     * Write data associated with the given token.
      *
      * @param Profile $profile A Profile instance
      *
diff --git a/core/vendor/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php
similarity index 91%
rename from core/vendor/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php
index 638d0cb..5d7b93d 100644
--- a/core/vendor/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Profiler/SqliteProfilerStorage.php
@@ -41,10 +41,9 @@ class SqliteProfilerStorage extends PdoProfilerStorage
             }
 
             $db->exec('PRAGMA temp_store=MEMORY; PRAGMA journal_mode=MEMORY;');
-            $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token STRING, data STRING, ip STRING, method STRING, url STRING, time INTEGER, parent STRING, created_at INTEGER)');
+            $db->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token STRING, data STRING, ip STRING, url STRING, time INTEGER, parent STRING, created_at INTEGER)');
             $db->exec('CREATE INDEX IF NOT EXISTS data_created_at ON sf_profiler_data (created_at)');
             $db->exec('CREATE INDEX IF NOT EXISTS data_ip ON sf_profiler_data (ip)');
-            $db->exec('CREATE INDEX IF NOT EXISTS data_method ON sf_profiler_data (method)');
             $db->exec('CREATE INDEX IF NOT EXISTS data_url ON sf_profiler_data (url)');
             $db->exec('CREATE INDEX IF NOT EXISTS data_parent ON sf_profiler_data (parent)');
             $db->exec('CREATE UNIQUE INDEX IF NOT EXISTS data_token ON sf_profiler_data (token)');
@@ -98,7 +97,7 @@ class SqliteProfilerStorage extends PdoProfilerStorage
     /**
      * {@inheritdoc}
      */
-    protected function buildCriteria($ip, $url, $limit, $method)
+    protected function buildCriteria($ip, $url, $limit)
     {
         $criteria = array();
         $args = array();
@@ -113,11 +112,6 @@ class SqliteProfilerStorage extends PdoProfilerStorage
             $args[':url'] = '%'.addcslashes($url, '%_\\').'%';
         }
 
-        if ($method) {
-            $criteria[] = 'method = :method';
-            $args[':method'] = $method;
-        }
-
         return array($criteria, $args);
     }
 
diff --git a/core/vendor/Symfony/Component/HttpKernel/README.md b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/README.md
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/README.md
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/README.md
diff --git a/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Util/Filesystem.php b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Util/Filesystem.php
new file mode 100644
index 0000000..94b0998
--- /dev/null
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Util/Filesystem.php
@@ -0,0 +1,248 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\HttpKernel\Util;
+
+/**
+ * Provides basic utility to manipulate the file system.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class Filesystem
+{
+    /**
+     * Copies a file.
+     *
+     * This method only copies the file if the origin file is newer than the target file.
+     *
+     * By default, if the target already exists, it is not overridden.
+     *
+     * @param string $originFile The original filename
+     * @param string $targetFile The target filename
+     * @param array  $override   Whether to override an existing file or not
+     */
+    public function copy($originFile, $targetFile, $override = false)
+    {
+        $this->mkdir(dirname($targetFile));
+
+        if (!$override && file_exists($targetFile)) {
+            $doCopy = filemtime($originFile) > filemtime($targetFile);
+        } else {
+            $doCopy = true;
+        }
+
+        if ($doCopy) {
+            copy($originFile, $targetFile);
+        }
+    }
+
+    /**
+     * Creates a directory recursively.
+     *
+     * @param  string|array|\Traversable $dirs The directory path
+     * @param  int                       $mode The directory mode
+     *
+     * @return Boolean true if the directory has been created, false otherwise
+     */
+    public function mkdir($dirs, $mode = 0777)
+    {
+        $ret = true;
+        foreach ($this->toIterator($dirs) as $dir) {
+            if (is_dir($dir)) {
+                continue;
+            }
+
+            $ret = @mkdir($dir, $mode, true) && $ret;
+        }
+
+        return $ret;
+    }
+
+    /**
+     * Creates empty files.
+     *
+     * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to remove
+     */
+    public function touch($files)
+    {
+        foreach ($this->toIterator($files) as $file) {
+            touch($file);
+        }
+    }
+
+    /**
+     * Removes files or directories.
+     *
+     * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to remove
+     */
+    public function remove($files)
+    {
+        $files = iterator_to_array($this->toIterator($files));
+        $files = array_reverse($files);
+        foreach ($files as $file) {
+            if (!file_exists($file)) {
+                continue;
+            }
+
+            if (is_dir($file) && !is_link($file)) {
+                $this->remove(new \FilesystemIterator($file));
+
+                rmdir($file);
+            } else {
+                unlink($file);
+            }
+        }
+    }
+
+    /**
+     * Change mode for an array of files or directories.
+     *
+     * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to remove
+     * @param integer                   $mode  The new mode
+     * @param integer                   $umask The mode mask (octal)
+     */
+    public function chmod($files, $mode, $umask = 0000)
+    {
+        $currentUmask = umask();
+        umask($umask);
+
+        foreach ($this->toIterator($files) as $file) {
+            chmod($file, $mode);
+        }
+
+        umask($currentUmask);
+    }
+
+    /**
+     * Renames a file.
+     *
+     * @param string $origin  The origin filename
+     * @param string $target  The new filename
+     *
+     * @throws \RuntimeException When target file already exists
+     */
+    public function rename($origin, $target)
+    {
+        // we check that target does not exist
+        if (is_readable($target)) {
+            throw new \RuntimeException(sprintf('Cannot rename because the target "%s" already exist.', $target));
+        }
+
+        rename($origin, $target);
+    }
+
+    /**
+     * Creates a symbolic link or copy a directory.
+     *
+     * @param string  $originDir     The origin directory path
+     * @param string  $targetDir     The symbolic link name
+     * @param Boolean $copyOnWindows Whether to copy files if on Windows
+     */
+    public function symlink($originDir, $targetDir, $copyOnWindows = false)
+    {
+        if (!function_exists('symlink') && $copyOnWindows) {
+            $this->mirror($originDir, $targetDir);
+
+            return;
+        }
+
+        $ok = false;
+        if (is_link($targetDir)) {
+            if (readlink($targetDir) != $originDir) {
+                unlink($targetDir);
+            } else {
+                $ok = true;
+            }
+        }
+
+        if (!$ok) {
+            symlink($originDir, $targetDir);
+        }
+    }
+
+    /**
+     * Mirrors a directory to another.
+     *
+     * @param string $originDir      The origin directory
+     * @param string $targetDir      The target directory
+     * @param \Traversable $iterator A Traversable instance
+     * @param array  $options        An array of boolean options
+     *                               Valid options are:
+     *                                 - $options['override'] Whether to override an existing file on copy or not (see copy())
+     *                                 - $options['copy_on_windows'] Whether to copy files instead of links on Windows (see symlink())
+     *
+     * @throws \RuntimeException When file type is unknown
+     */
+    public function mirror($originDir, $targetDir, \Traversable $iterator = null, $options = array())
+    {
+        $copyOnWindows = false;
+        if (isset($options['copy_on_windows']) && !function_exists('symlink')) {
+            $copyOnWindows = $options['copy_on_windows'];
+        }
+
+        if (null === $iterator) {
+            $flags = $copyOnWindows ? \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS : \FilesystemIterator::SKIP_DOTS;
+            $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($originDir, $flags), \RecursiveIteratorIterator::SELF_FIRST);
+        }
+
+        if ('/' === substr($targetDir, -1) || '\\' === substr($targetDir, -1)) {
+            $targetDir = substr($targetDir, 0, -1);
+        }
+
+        if ('/' === substr($originDir, -1) || '\\' === substr($originDir, -1)) {
+            $originDir = substr($originDir, 0, -1);
+        }
+
+        foreach ($iterator as $file) {
+            $target = $targetDir.'/'.str_replace($originDir.DIRECTORY_SEPARATOR, '', $file->getPathname());
+
+            if (is_link($file)) {
+                $this->symlink($file, $target);
+            } elseif (is_dir($file)) {
+                $this->mkdir($target);
+            } elseif (is_file($file) || ($copyOnWindows && is_link($file))) {
+                $this->copy($file, $target, isset($options['override']) ? $options['override'] : false);
+            } else {
+                throw new \RuntimeException(sprintf('Unable to guess "%s" file type.', $file));
+            }
+        }
+    }
+
+    /**
+     * Returns whether the file path is an absolute path.
+     *
+     * @param string $file A file path
+     *
+     * @return Boolean
+     */
+    public function isAbsolutePath($file)
+    {
+        if ($file[0] == '/' || $file[0] == '\\'
+            || (strlen($file) > 3 && ctype_alpha($file[0])
+                && $file[1] == ':'
+                && ($file[2] == '\\' || $file[2] == '/')
+            )
+        ) {
+            return true;
+        }
+
+        return false;
+    }
+
+    private function toIterator($files)
+    {
+        if (!$files instanceof \Traversable) {
+            $files = new \ArrayObject(is_array($files) ? $files : array($files));
+        }
+
+        return $files;
+    }
+}
diff --git a/core/vendor/Symfony/Component/HttpKernel/composer.json b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/composer.json
similarity index 97%
rename from core/vendor/Symfony/Component/HttpKernel/composer.json
rename to core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/composer.json
index d48cc2d..bbe7511 100644
--- a/core/vendor/Symfony/Component/HttpKernel/composer.json
+++ b/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/composer.json
@@ -4,7 +4,6 @@
     "description": "Symfony HttpKernel Component",
     "keywords": [],
     "homepage": "http://symfony.com",
-    "version": "2.1.0",
     "license": "MIT",
     "authors": [
         {
diff --git a/core/vendor/Symfony/Component/Routing/Annotation/Route.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Annotation/Route.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Annotation/Route.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Annotation/Route.php
diff --git a/core/vendor/Symfony/Component/Routing/CompiledRoute.php b/core/vendor/symfony/routing/Symfony/Component/Routing/CompiledRoute.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/CompiledRoute.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/CompiledRoute.php
diff --git a/core/vendor/Symfony/Component/Routing/Exception/ExceptionInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Exception/ExceptionInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Exception/ExceptionInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Exception/ExceptionInterface.php
diff --git a/core/vendor/Symfony/Component/Routing/Exception/InvalidParameterException.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Exception/InvalidParameterException.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Exception/InvalidParameterException.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Exception/InvalidParameterException.php
diff --git a/core/vendor/Symfony/Component/Routing/Exception/MethodNotAllowedException.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Exception/MethodNotAllowedException.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Exception/MethodNotAllowedException.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Exception/MethodNotAllowedException.php
diff --git a/core/vendor/Symfony/Component/Routing/Exception/MissingMandatoryParametersException.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Exception/MissingMandatoryParametersException.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Exception/MissingMandatoryParametersException.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Exception/MissingMandatoryParametersException.php
diff --git a/core/vendor/Symfony/Component/Routing/Exception/ResourceNotFoundException.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Exception/ResourceNotFoundException.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Exception/ResourceNotFoundException.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Exception/ResourceNotFoundException.php
diff --git a/core/vendor/Symfony/Component/Routing/Exception/RouteNotFoundException.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Exception/RouteNotFoundException.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Exception/RouteNotFoundException.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Exception/RouteNotFoundException.php
diff --git a/core/vendor/Symfony/Component/Routing/Generator/Dumper/GeneratorDumper.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Generator/Dumper/GeneratorDumper.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Generator/Dumper/GeneratorDumper.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Generator/Dumper/GeneratorDumper.php
diff --git a/core/vendor/Symfony/Component/Routing/Generator/Dumper/GeneratorDumperInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Generator/Dumper/GeneratorDumperInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Generator/Dumper/GeneratorDumperInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Generator/Dumper/GeneratorDumperInterface.php
diff --git a/core/vendor/Symfony/Component/Routing/Generator/Dumper/PhpGeneratorDumper.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Generator/Dumper/PhpGeneratorDumper.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Generator/Dumper/PhpGeneratorDumper.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Generator/Dumper/PhpGeneratorDumper.php
diff --git a/core/vendor/Symfony/Component/Routing/Generator/UrlGenerator.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGenerator.php
similarity index 89%
rename from core/vendor/Symfony/Component/Routing/Generator/UrlGenerator.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGenerator.php
index 535f7bb..f0e2a48 100644
--- a/core/vendor/Symfony/Component/Routing/Generator/UrlGenerator.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGenerator.php
@@ -74,7 +74,15 @@ class UrlGenerator implements UrlGeneratorInterface
     }
 
     /**
-     * {@inheritDoc}
+     * Generates a URL from the given parameters.
+     *
+     * @param  string  $name       The name of the route
+     * @param  mixed   $parameters An array of parameters
+     * @param  Boolean $absolute   Whether to generate an absolute URL
+     *
+     * @return string The generated URL
+     *
+     * @throws Symfony\Component\Routing\Exception\RouteNotFoundException When route doesn't exist
      *
      * @api
      */
@@ -92,8 +100,8 @@ class UrlGenerator implements UrlGeneratorInterface
     }
 
     /**
-     * @throws MissingMandatoryParametersException When route has some missing mandatory parameters
-     * @throws InvalidParameterException When a parameter value is not correct
+     * @throws Symfony\Component\Routing\Exception\MissingMandatoryParametersException When route has some missing mandatory parameters
+     * @throws Symfony\Component\Routing\Exception\InvalidParameterException When a parameter value is not correct
      */
     protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $absolute)
     {
diff --git a/core/vendor/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php
similarity index 76%
rename from core/vendor/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php
index 220334f..d1d8d00 100644
--- a/core/vendor/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php
@@ -12,10 +12,9 @@
 namespace Symfony\Component\Routing\Generator;
 
 use Symfony\Component\Routing\RequestContextAwareInterface;
-use Symfony\Component\Routing\Exception\RouteNotFoundException;
 
 /**
- * UrlGeneratorInterface is the interface that all URL generator classes must implement.
+ * UrlGeneratorInterface is the interface that all URL generator classes must implements.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  *
@@ -26,17 +25,12 @@ interface UrlGeneratorInterface extends RequestContextAwareInterface
     /**
      * Generates a URL from the given parameters.
      *
-     * If the generator is not able to generate the url, it must throw the RouteNotFoundException
-     * as documented below.
-     *
      * @param string  $name       The name of the route
      * @param mixed   $parameters An array of parameters
      * @param Boolean $absolute   Whether to generate an absolute URL
      *
      * @return string The generated URL
      *
-     * @throws RouteNotFoundException if route doesn't exist
-     *
      * @api
      */
     function generate($name, $parameters = array(), $absolute = false);
diff --git a/core/vendor/Symfony/Component/HttpKernel/LICENSE b/core/vendor/symfony/routing/Symfony/Component/Routing/LICENSE
similarity index 100%
rename from core/vendor/Symfony/Component/HttpKernel/LICENSE
rename to core/vendor/symfony/routing/Symfony/Component/Routing/LICENSE
diff --git a/core/vendor/Symfony/Component/Routing/Loader/AnnotationClassLoader.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/AnnotationClassLoader.php
similarity index 95%
rename from core/vendor/Symfony/Component/Routing/Loader/AnnotationClassLoader.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Loader/AnnotationClassLoader.php
index 28fa896..aa0ec96 100644
--- a/core/vendor/Symfony/Component/Routing/Loader/AnnotationClassLoader.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/AnnotationClassLoader.php
@@ -17,7 +17,7 @@ use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\Routing\RouteCollection;
 use Symfony\Component\Config\Loader\LoaderInterface;
-use Symfony\Component\Config\Loader\LoaderResolverInterface;
+use Symfony\Component\Config\Loader\LoaderResolver;
 
 /**
  * AnnotationClassLoader loads routing information from a PHP class and its methods.
@@ -176,16 +176,16 @@ abstract class AnnotationClassLoader implements LoaderInterface
     /**
      * Sets the loader resolver.
      *
-     * @param LoaderResolverInterface $resolver A LoaderResolverInterface instance
+     * @param LoaderResolver $resolver A LoaderResolver instance
      */
-    public function setResolver(LoaderResolverInterface $resolver)
+    public function setResolver(LoaderResolver $resolver)
     {
     }
 
     /**
      * Gets the loader resolver.
      *
-     * @return LoaderResolverInterface A LoaderResolverInterface instance
+     * @return LoaderResolver A LoaderResolver instance
      */
     public function getResolver()
     {
diff --git a/core/vendor/Symfony/Component/Routing/Loader/AnnotationDirectoryLoader.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/AnnotationDirectoryLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Loader/AnnotationDirectoryLoader.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Loader/AnnotationDirectoryLoader.php
diff --git a/core/vendor/Symfony/Component/Routing/Loader/AnnotationFileLoader.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/AnnotationFileLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Loader/AnnotationFileLoader.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Loader/AnnotationFileLoader.php
diff --git a/core/vendor/Symfony/Component/Routing/Loader/ClosureLoader.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/ClosureLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Loader/ClosureLoader.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Loader/ClosureLoader.php
diff --git a/core/vendor/Symfony/Component/Routing/Loader/PhpFileLoader.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/PhpFileLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Loader/PhpFileLoader.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Loader/PhpFileLoader.php
diff --git a/core/vendor/Symfony/Component/Routing/Loader/XmlFileLoader.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/XmlFileLoader.php
similarity index 87%
rename from core/vendor/Symfony/Component/Routing/Loader/XmlFileLoader.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Loader/XmlFileLoader.php
index 913deab..eb96d2a 100644
--- a/core/vendor/Symfony/Component/Routing/Loader/XmlFileLoader.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/XmlFileLoader.php
@@ -76,29 +76,8 @@ class XmlFileLoader extends FileLoader
                 $resource = (string) $node->getAttribute('resource');
                 $type = (string) $node->getAttribute('type');
                 $prefix = (string) $node->getAttribute('prefix');
-
-                $defaults = array();
-                $requirements = array();
-
-                foreach ($node->childNodes as $n) {
-                    if (!$n instanceof \DOMElement) {
-                        continue;
-                    }
-
-                    switch ($n->tagName) {
-                        case 'default':
-                            $defaults[(string) $n->getAttribute('key')] = trim((string) $n->nodeValue);
-                            break;
-                        case 'requirement':
-                            $requirements[(string) $n->getAttribute('key')] = trim((string) $n->nodeValue);
-                            break;
-                        default:
-                            throw new \InvalidArgumentException(sprintf('Unable to parse tag "%s"', $n->tagName));
-                    }
-                }
-
                 $this->setCurrentDir(dirname($path));
-                $collection->addCollection($this->import($resource, ('' !== $type ? $type : null), false, $file), $prefix, $defaults, $requirements);
+                $collection->addCollection($this->import($resource, ('' !== $type ? $type : null), false, $file), $prefix);
                 break;
             default:
                 throw new \InvalidArgumentException(sprintf('Unable to parse tag "%s"', $node->tagName));
diff --git a/core/vendor/Symfony/Component/Routing/Loader/YamlFileLoader.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/YamlFileLoader.php
similarity index 94%
rename from core/vendor/Symfony/Component/Routing/Loader/YamlFileLoader.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Loader/YamlFileLoader.php
index 5d8f02a..3ff11a5 100644
--- a/core/vendor/Symfony/Component/Routing/Loader/YamlFileLoader.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/YamlFileLoader.php
@@ -67,11 +67,8 @@ class YamlFileLoader extends FileLoader
             if (isset($config['resource'])) {
                 $type = isset($config['type']) ? $config['type'] : null;
                 $prefix = isset($config['prefix']) ? $config['prefix'] : null;
-                $defaults = isset($config['defaults']) ? $config['defaults'] : array();
-                $requirements = isset($config['requirements']) ? $config['requirements'] : array();
-
                 $this->setCurrentDir(dirname($path));
-                $collection->addCollection($this->import($config['resource'], $type, false, $file), $prefix, $defaults, $requirements);
+                $collection->addCollection($this->import($config['resource'], $type, false, $file), $prefix);
             } else {
                 $this->parseRoute($collection, $name, $config, $path);
             }
diff --git a/core/vendor/Symfony/Component/Routing/Loader/schema/routing/routing-1.0.xsd b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/schema/routing/routing-1.0.xsd
similarity index 86%
rename from core/vendor/Symfony/Component/Routing/Loader/schema/routing/routing-1.0.xsd
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Loader/schema/routing/routing-1.0.xsd
index 3b8fa3d..a9554e6 100644
--- a/core/vendor/Symfony/Component/Routing/Loader/schema/routing/routing-1.0.xsd
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Loader/schema/routing/routing-1.0.xsd
@@ -26,11 +26,6 @@
   </xsd:complexType>
 
   <xsd:complexType name="import">
-    <xsd:sequence>
-      <xsd:element name="default" type="element" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="requirement" type="element" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-
     <xsd:attribute name="resource" type="xsd:string" />
     <xsd:attribute name="type" type="xsd:string" />
     <xsd:attribute name="prefix" type="xsd:string" />
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/ApacheUrlMatcher.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/ApacheUrlMatcher.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Matcher/ApacheUrlMatcher.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/ApacheUrlMatcher.php
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/Dumper/ApacheMatcherDumper.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/ApacheMatcherDumper.php
similarity index 89%
rename from core/vendor/Symfony/Component/Routing/Matcher/Dumper/ApacheMatcherDumper.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/ApacheMatcherDumper.php
index 344abe2..0b3836a 100644
--- a/core/vendor/Symfony/Component/Routing/Matcher/Dumper/ApacheMatcherDumper.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/ApacheMatcherDumper.php
@@ -49,16 +49,7 @@ class ApacheMatcherDumper extends MatcherDumper
             $regex = preg_replace('/\?P<.+?>/', '', substr(str_replace(array("\n", ' '), '', $compiledRoute->getRegex()), 1, -3));
             $regex = '^'.preg_quote($options['base_uri']).substr($regex, 1);
 
-            $methods = array();
-            if ($req = $route->getRequirement('_method')) {
-                $methods = explode('|', strtoupper($req));
-                // GET and HEAD are equivalent
-                if (in_array('GET', $methods) && !in_array('HEAD', $methods)) {
-                    $methods[] = 'HEAD';
-                }
-            }
-
-            $hasTrailingSlash = (!$methods || in_array('HEAD', $methods)) && '/$' == substr($regex, -2) && '^/$' != $regex;
+            $hasTrailingSlash = '/$' == substr($regex, -2) && '^/$' != $regex;
 
             $variables = array('E=_ROUTING__route:'.$name);
             foreach ($compiledRoute->getVariables() as $i => $variable) {
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/Dumper/MatcherDumper.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/MatcherDumper.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Matcher/Dumper/MatcherDumper.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/MatcherDumper.php
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/Dumper/MatcherDumperInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/MatcherDumperInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Matcher/Dumper/MatcherDumperInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/MatcherDumperInterface.php
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php
similarity index 95%
rename from core/vendor/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php
index 5c2fcb4..6ec216d 100644
--- a/core/vendor/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/Dumper/PhpMatcherDumper.php
@@ -148,18 +148,8 @@ EOF;
         $conditions = array();
         $hasTrailingSlash = false;
         $matches = false;
-        $methods = array();
-        if ($req = $route->getRequirement('_method')) {
-            $methods = explode('|', strtoupper($req));
-            // GET and HEAD are equivalent
-            if (in_array('GET', $methods) && !in_array('HEAD', $methods)) {
-                $methods[] = 'HEAD';
-            }
-        }
-        $supportsTrailingSlash = $supportsRedirections && (!$methods || in_array('HEAD', $methods));
-
         if (!count($compiledRoute->getVariables()) && false !== preg_match('#^(.)\^(?P<url>.*?)\$\1#', str_replace(array("\n", ' '), '', $compiledRoute->getRegex()), $m)) {
-            if ($supportsTrailingSlash && substr($m['url'], -1) === '/') {
+            if ($supportsRedirections && substr($m['url'], -1) === '/') {
                 $conditions[] = sprintf("rtrim(\$pathinfo, '/') === %s", var_export(rtrim(str_replace('\\', '', $m['url']), '/'), true));
                 $hasTrailingSlash = true;
             } else {
@@ -171,7 +161,7 @@ EOF;
             }
 
             $regex = str_replace(array("\n", ' '), '', $compiledRoute->getRegex());
-            if ($supportsTrailingSlash && $pos = strpos($regex, '/$')) {
+            if ($supportsRedirections && $pos = strpos($regex, '/$')) {
                 $regex = substr($regex, 0, $pos).'/?$'.substr($regex, $pos + 2);
                 $hasTrailingSlash = true;
             }
@@ -189,7 +179,12 @@ EOF;
         if ($conditions) {
 EOF;
 
-        if ($methods) {
+        if ($req = $route->getRequirement('_method')) {
+            $methods = explode('|', strtoupper($req));
+            // GET and HEAD are equivalent
+            if (in_array('GET', $methods) && !in_array('HEAD', $methods)) {
+                $methods[] = 'HEAD';
+            }
             if (1 === count($methods)) {
                 $code[] = <<<EOF
             if (\$this->context->getMethod() != '$methods[0]') {
@@ -219,7 +214,7 @@ EOF
 
         if ($scheme = $route->getRequirement('_scheme')) {
             if (!$supportsRedirections) {
-                throw new \LogicException('The "_scheme" requirement is only supported for URL matchers that implement RedirectableUrlMatcherInterface.');
+                throw new \LogicException('The "_scheme" requirement is only supported for route dumper that implements RedirectableUrlMatcherInterface.');
             }
 
             $code[] = sprintf(<<<EOF
@@ -244,7 +239,7 @@ EOF
         }
         $code[] = "        }";
 
-        if ($methods) {
+        if ($req) {
             $code[] = "        $gotoname:";
         }
 
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/RedirectableUrlMatcher.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/RedirectableUrlMatcher.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Matcher/RedirectableUrlMatcher.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/RedirectableUrlMatcher.php
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/RedirectableUrlMatcherInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/RedirectableUrlMatcherInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Matcher/RedirectableUrlMatcherInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/RedirectableUrlMatcherInterface.php
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/UrlMatcher.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/UrlMatcher.php
similarity index 86%
rename from core/vendor/Symfony/Component/Routing/Matcher/UrlMatcher.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/UrlMatcher.php
index 5d30ae9..b8f2167 100644
--- a/core/vendor/Symfony/Component/Routing/Matcher/UrlMatcher.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/UrlMatcher.php
@@ -15,7 +15,6 @@ use Symfony\Component\Routing\Exception\MethodNotAllowedException;
 use Symfony\Component\Routing\Exception\ResourceNotFoundException;
 use Symfony\Component\Routing\RouteCollection;
 use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Matcher\RedirectableUrlMatcherInterface;
 
 /**
  * UrlMatcher matches URL based on a set of routes.
@@ -67,7 +66,14 @@ class UrlMatcher implements UrlMatcherInterface
     }
 
     /**
-     * {@inheritDoc}
+     * Tries to match a URL with a set of routes.
+     *
+     * @param  string $pathinfo The path info to be parsed
+     *
+     * @return array An array of parameters
+     *
+     * @throws ResourceNotFoundException If the resource could not be found
+     * @throws MethodNotAllowedException If the resource was found but the request method is not allowed
      *
      * @api
      */
@@ -126,17 +132,6 @@ class UrlMatcher implements UrlMatcherInterface
                 }
             }
 
-            // check HTTP scheme requirement
-            if ($scheme = $route->getRequirement('_scheme')) {
-                if (!$this instanceof RedirectableUrlMatcherInterface) {
-                    throw new \LogicException('The "_scheme" requirement is only supported for URL matchers that implement RedirectableUrlMatcherInterface.');
-                }
-
-                if ($this->context->getScheme() !== $scheme) {
-                    return $this->redirect($pathinfo, $name, $scheme);
-                }
-            }
-
             return array_merge($this->mergeDefaults($matches, $route->getDefaults()), array('_route' => $name));
         }
     }
diff --git a/core/vendor/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php
similarity index 79%
rename from core/vendor/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php
index ce998ea..db95b81 100644
--- a/core/vendor/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php
@@ -12,8 +12,6 @@
 namespace Symfony\Component\Routing\Matcher;
 
 use Symfony\Component\Routing\RequestContextAwareInterface;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\Routing\Exception\MethodNotAllowedException;
 
 /**
  * UrlMatcherInterface is the interface that all URL matcher classes must implement.
@@ -27,9 +25,6 @@ interface UrlMatcherInterface extends RequestContextAwareInterface
     /**
      * Tries to match a URL with a set of routes.
      *
-     * If the matcher can not find information, it must throw one of the exceptions documented
-     * below.
-     *
      * @param  string $pathinfo The path info to be parsed
      *
      * @return array An array of parameters
diff --git a/core/vendor/Symfony/Component/Routing/README.md b/core/vendor/symfony/routing/Symfony/Component/Routing/README.md
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/README.md
rename to core/vendor/symfony/routing/Symfony/Component/Routing/README.md
diff --git a/core/vendor/Symfony/Component/Routing/RequestContext.php b/core/vendor/symfony/routing/Symfony/Component/Routing/RequestContext.php
similarity index 91%
rename from core/vendor/Symfony/Component/Routing/RequestContext.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/RequestContext.php
index 013d942..432b3cb 100644
--- a/core/vendor/Symfony/Component/Routing/RequestContext.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/RequestContext.php
@@ -11,8 +11,6 @@
 
 namespace Symfony\Component\Routing;
 
-use Symfony\Component\HttpFoundation\Request;
-
 /**
  * Holds information about the current request.
  *
@@ -53,16 +51,6 @@ class RequestContext
         $this->parameters = array();
     }
 
-    public function fromRequest(Request $request)
-    {
-        $this->setBaseUrl($request->getBaseUrl());
-        $this->setMethod($request->getMethod());
-        $this->setHost($request->getHost());
-        $this->setScheme($request->getScheme());
-        $this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort());
-        $this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort);
-    }
-
     /**
      * Gets the base URL.
      *
diff --git a/core/vendor/Symfony/Component/Routing/RequestContextAwareInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/RequestContextAwareInterface.php
similarity index 77%
rename from core/vendor/Symfony/Component/Routing/RequestContextAwareInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/RequestContextAwareInterface.php
index 8357b52..9d3a28f 100644
--- a/core/vendor/Symfony/Component/Routing/RequestContextAwareInterface.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/RequestContextAwareInterface.php
@@ -24,13 +24,4 @@ interface RequestContextAwareInterface
      * @api
      */
     function setContext(RequestContext $context);
-
-    /**
-     * Gets the request context.
-     *
-     * @return RequestContext The context
-     *
-     * @api
-     */
-    function getContext();
 }
diff --git a/core/vendor/Symfony/Component/Routing/Route.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Route.php
similarity index 91%
rename from core/vendor/Symfony/Component/Routing/Route.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Route.php
index 02131f4..3a64ca6 100644
--- a/core/vendor/Symfony/Component/Routing/Route.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/Route.php
@@ -167,21 +167,6 @@ class Route
     public function setDefaults(array $defaults)
     {
         $this->defaults = array();
-
-        return $this->addDefaults($defaults);
-    }
-
-    /**
-     * Adds defaults.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $defaults The defaults
-     *
-     * @return Route The current Route instance
-     */
-    public function addDefaults(array $defaults)
-    {
         foreach ($defaults as $name => $default) {
             $this->defaults[(string) $name] = $default;
         }
@@ -252,21 +237,6 @@ class Route
     public function setRequirements(array $requirements)
     {
         $this->requirements = array();
-
-        return $this->addRequirements($requirements);
-    }
-
-    /**
-     * Adds requirements.
-     *
-     * This method implements a fluent interface.
-     *
-     * @param array $requirements The requirements
-     *
-     * @return Route The current Route instance
-     */
-    public function addRequirements(array $requirements)
-    {
         foreach ($requirements as $key => $regex) {
             $this->requirements[$key] = $this->sanitizeRequirement($key, $regex);
         }
diff --git a/core/vendor/Symfony/Component/Routing/RouteCollection.php b/core/vendor/symfony/routing/Symfony/Component/Routing/RouteCollection.php
similarity index 85%
rename from core/vendor/Symfony/Component/Routing/RouteCollection.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/RouteCollection.php
index cc8fdc9..8224a7a 100644
--- a/core/vendor/Symfony/Component/Routing/RouteCollection.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/RouteCollection.php
@@ -175,17 +175,15 @@ class RouteCollection implements \IteratorAggregate
     /**
      * Adds a route collection to the current set of routes (at the end of the current set).
      *
-     * @param RouteCollection $collection   A RouteCollection instance
-     * @param string          $prefix       An optional prefix to add before each pattern of the route collection
-     * @param array           $defaults     An array of default values
-     * @param array           $requirements An array of requirements
+     * @param RouteCollection $collection A RouteCollection instance
+     * @param string          $prefix     An optional prefix to add before each pattern of the route collection
      *
      * @api
      */
-    public function addCollection(RouteCollection $collection, $prefix = '', $defaults = array(), $requirements = array())
+    public function addCollection(RouteCollection $collection, $prefix = '')
     {
         $collection->setParent($this);
-        $collection->addPrefix($prefix, $defaults, $requirements);
+        $collection->addPrefix($prefix);
 
         // remove all routes with the same name in all existing collections
         foreach (array_keys($collection->all()) as $name) {
@@ -198,19 +196,21 @@ class RouteCollection implements \IteratorAggregate
     /**
      * Adds a prefix to all routes in the current set.
      *
-     * @param string $prefix       An optional prefix to add before each pattern of the route collection
-     * @param array  $defaults     An array of default values
-     * @param array  $requirements An array of requirements
+     * @param string          $prefix     An optional prefix to add before each pattern of the route collection
      *
      * @api
      */
-    public function addPrefix($prefix, $defaults = array(), $requirements = array())
+    public function addPrefix($prefix)
     {
         // a prefix must not end with a slash
         $prefix = rtrim($prefix, '/');
 
+        if (!$prefix) {
+            return;
+        }
+
         // a prefix must start with a slash
-        if ($prefix && '/' !== $prefix[0]) {
+        if ('/' !== $prefix[0]) {
             $prefix = '/'.$prefix;
         }
 
@@ -218,11 +218,9 @@ class RouteCollection implements \IteratorAggregate
 
         foreach ($this->routes as $name => $route) {
             if ($route instanceof RouteCollection) {
-                $route->addPrefix($prefix, $defaults, $requirements);
+                $route->addPrefix($prefix);
             } else {
                 $route->setPattern($prefix.$route->getPattern());
-                $route->addDefaults($defaults);
-                $route->addRequirements($requirements);
             }
         }
     }
diff --git a/core/vendor/Symfony/Component/Routing/RouteCompiler.php b/core/vendor/symfony/routing/Symfony/Component/Routing/RouteCompiler.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/RouteCompiler.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/RouteCompiler.php
diff --git a/core/vendor/Symfony/Component/Routing/RouteCompilerInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/RouteCompilerInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/RouteCompilerInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/RouteCompilerInterface.php
diff --git a/core/vendor/Symfony/Component/Routing/Router.php b/core/vendor/symfony/routing/Symfony/Component/Routing/Router.php
similarity index 100%
rename from core/vendor/Symfony/Component/Routing/Router.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/Router.php
diff --git a/core/vendor/Symfony/Component/Routing/RouterInterface.php b/core/vendor/symfony/routing/Symfony/Component/Routing/RouterInterface.php
similarity index 79%
rename from core/vendor/Symfony/Component/Routing/RouterInterface.php
rename to core/vendor/symfony/routing/Symfony/Component/Routing/RouterInterface.php
index 8591af8..961342b 100644
--- a/core/vendor/Symfony/Component/Routing/RouterInterface.php
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/RouterInterface.php
@@ -23,10 +23,4 @@ use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
  */
 interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface
 {
-    /**
-     * Gets the RouteCollection instance associated with this Router.
-     *
-     * @return RouteCollection A RouteCollection instance
-     */
-    function getRouteCollection();
 }
diff --git a/core/vendor/Symfony/Component/Routing/composer.json b/core/vendor/symfony/routing/Symfony/Component/Routing/composer.json
similarity index 96%
rename from core/vendor/Symfony/Component/Routing/composer.json
rename to core/vendor/symfony/routing/Symfony/Component/Routing/composer.json
index a3b5e88..8d29398 100644
--- a/core/vendor/Symfony/Component/Routing/composer.json
+++ b/core/vendor/symfony/routing/Symfony/Component/Routing/composer.json
@@ -4,7 +4,6 @@
     "description": "Symfony Routing Component",
     "keywords": [],
     "homepage": "http://symfony.com",
-    "version": "2.1.0",
     "license": "MIT",
     "authors": [
         {
