diff --git a/composer.json b/composer.json
index 117dbb8..c199d49 100644
--- a/composer.json
+++ b/composer.json
@@ -20,7 +20,7 @@
     "doctrine/common": "dev-master#a45d110f71c323e29f41eb0696fa230e3fa1b1b5",
     "doctrine/annotations": "1.2.*",
     "guzzlehttp/guzzle": "~5.0",
-    "symfony-cmf/routing": "1.2.*",
+    "symfony-cmf/routing": "1.3.*",
     "easyrdf/easyrdf": "0.8.*",
     "phpunit/phpunit": "4.1.*",
     "phpunit/phpunit-mock-objects": "dev-master#e60bb929c50ae4237aaf680a4f6773f4ee17f0a2",
diff --git a/composer.lock b/composer.lock
index c61f790..4741c6c 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "838f4566f4f537d5f71fa46b66f263b0",
+    "hash": "76329b5b9ca9082b0999c5c564b98c06",
     "packages": [
         {
             "name": "doctrine/annotations",
@@ -1586,17 +1586,16 @@
         },
         {
             "name": "symfony-cmf/routing",
-            "version": "1.2.0",
-            "target-dir": "Symfony/Cmf/Component/Routing",
+            "version": "1.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony-cmf/Routing.git",
-                "reference": "c67258b875eef3cb08009bf1428499d0f01ce5e7"
+                "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/c67258b875eef3cb08009bf1428499d0f01ce5e7",
-                "reference": "c67258b875eef3cb08009bf1428499d0f01ce5e7",
+                "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/8e87981d72c6930a27585dcd3119f3199f6cb2a6",
+                "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6",
                 "shasum": ""
             },
             "require": {
@@ -1607,7 +1606,7 @@
             },
             "require-dev": {
                 "symfony/config": "~2.2",
-                "symfony/dependency-injection": "~2.0",
+                "symfony/dependency-injection": "~2.0@stable",
                 "symfony/event-dispatcher": "~2.1"
             },
             "suggest": {
@@ -1616,12 +1615,12 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.2-dev"
+                    "dev-master": "1.3-dev"
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Symfony\\Cmf\\Component\\Routing": ""
+                "psr-4": {
+                    "Symfony\\Cmf\\Component\\Routing\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1640,7 +1639,7 @@
                 "database",
                 "routing"
             ],
-            "time": "2014-05-08 19:37:14"
+            "time": "2014-10-20 20:55:17"
         },
         {
             "name": "symfony/class-loader",
diff --git a/core/lib/Drupal/Core/Routing/LazyLoadingRouteCollection.php b/core/lib/Drupal/Core/Routing/LazyLoadingRouteCollection.php
deleted file mode 100644
index c1aa4a2..0000000
--- a/core/lib/Drupal/Core/Routing/LazyLoadingRouteCollection.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Routing\LazyLoadingRouteCollection.
- */
-
-namespace Drupal\Core\Routing;
-
-use Drupal\Core\Database\Connection;
-use Iterator;
-
-/**
- * Provides a route collection that lists all routes of drupal.
- *
- * Internally this does load multiple routes over time, so it never have all the
- * routes stored in memory.
- */
-class LazyLoadingRouteCollection implements Iterator {
-
-  /**
-   * Stores the current loaded routes.
-   *
-   * @var \Symfony\Component\Routing\Route[]
-   */
-  protected $elements;
-
-  /**
-   * Contains the amount of route which are loaded on each sql query.
-   */
-  const ROUTE_LOADED_PER_TIME = 50;
-
-  /**
-   * Contains the current item the iterator points to.
-   *
-   * @var int
-   */
-  protected $currentRoute = 0;
-
-  /**
-   * The database connection.
-   *
-   * @var \Drupal\Core\Database\Connection
-   */
-  protected $database;
-
-  /**
-   * The name of the SQL table from which to read the routes.
-   *
-   * @var string
-   */
-  protected $tableName;
-
-  /**
-   * The number of routes in the router table.
-   *
-   * @var int
-   */
-  protected $count;
-
-  /**
-   * Creates a LazyLoadingRouteCollection instance.
-   *
-   * @param \Drupal\Core\Database\Connection $database
-   *   The database connection.
-   * @param string $table
-   *   (optional) The table to retrieve the route information.
-   */
-  public function __construct(Connection $database, $table = 'router') {
-    $this->database = $database;
-    $this->tableName = $table;
-  }
-
-  /**
-   * Loads the next routes into the elements array.
-   *
-   * @param int $offset
-   *   The offset used in the db query.
-   */
-  protected function loadNextElements($offset) {
-    $this->elements = array();
-
-    $query = $this->database->select($this->tableName);
-    $query->addField($this->tableName, 'name');
-    $query->addField($this->tableName, 'route');
-    $query->orderBy('name', 'ASC');
-    $query->range($offset, static::ROUTE_LOADED_PER_TIME);
-    $result = $query->execute()->fetchAllKeyed();
-
-    $routes = array();
-    foreach ($result as $name => $route) {
-      $routes[$name] = unserialize($route);
-    }
-    $this->elements = $routes;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function count() {
-    if (!isset($this->count)) {
-      $this->count = (int) $this->database->select($this->tableName)->countQuery()->execute();
-    }
-    return $this->count;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function current() {
-    return current($this->elements);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function next() {
-    $result = next($this->elements);
-    if ($result === FALSE) {
-      $this->loadNextElements($this->currentRoute + 1);
-    }
-    $this->currentRoute++;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function key() {
-    return key($this->elements);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function valid() {
-    return key($this->elements);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function rewind() {
-    $this->currentRoute = 0;
-    $this->loadNextElements($this->currentRoute);
-  }
-
-}
diff --git a/core/lib/Drupal/Core/Routing/RouteProvider.php b/core/lib/Drupal/Core/Routing/RouteProvider.php
index cc0682a..a71f04c 100644
--- a/core/lib/Drupal/Core/Routing/RouteProvider.php
+++ b/core/lib/Drupal/Core/Routing/RouteProvider.php
@@ -9,6 +9,8 @@
 
 use Drupal\Component\Utility\String;
 use Drupal\Core\State\StateInterface;
+use Symfony\Cmf\Component\Routing\PagedRouteCollection;
+use Symfony\Cmf\Component\Routing\PagedRouteProviderInterface;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Exception\RouteNotFoundException;
@@ -20,7 +22,7 @@
 /**
  * A Route Provider front-end for all Drupal-stored routes.
  */
-class RouteProvider implements RouteProviderInterface, EventSubscriberInterface {
+class RouteProvider implements RouteProviderInterface, PagedRouteProviderInterface, EventSubscriberInterface {
 
   /**
    * The database connection from which to read route information.
@@ -306,7 +308,7 @@ protected function getRoutesByPath($path) {
    * {@inheritdoc}
    */
   public function getAllRoutes() {
-    return new LazyLoadingRouteCollection($this->connection, $this->tableName);
+    return new PagedRouteCollection($this);
   }
 
   /**
@@ -324,4 +326,28 @@ static function getSubscribedEvents() {
     return $events;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getRoutesPaged($offset, $length = NULL) {
+    $routes = $this->connection->select($this->tableName, 'router')
+      ->fields('router', ['name', 'route'])
+      ->range($offset, $length)
+      ->fetchAllKeyed();
+
+    $result = [];
+    foreach ($routes as $name => $route) {
+      $result[$name] = unserialize($route);
+    }
+
+    return $result;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getRoutesCount() {
+    return $this->connection->query("SELECT COUNT(*) FROM {" . $this->connection->escapeTable($this->tableName) . "}")->fetchField();
+  }
+
 }
diff --git a/core/tests/Drupal/Tests/Core/Routing/LazyLoadingRouteCollectionTest.php b/core/tests/Drupal/Tests/Core/Routing/LazyLoadingRouteCollectionTest.php
deleted file mode 100644
index 46f5995..0000000
--- a/core/tests/Drupal/Tests/Core/Routing/LazyLoadingRouteCollectionTest.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Tests\Core\Routing\LazyLoadingRouteCollectionTest.
- */
-
-namespace Drupal\Tests\Core\Routing;
-
-use Drupal\Core\Routing\LazyLoadingRouteCollection;
-use Drupal\Tests\UnitTestCase;
-use Symfony\Component\Routing\Route;
-
-/**
- * @coversDefaultClass \Drupal\Core\Routing\LazyLoadingRouteCollection
- * @group Routing
- */
-class LazyLoadingRouteCollectionTest extends UnitTestCase {
-
-  /**
-   * Stores all the routes used in the test.
-   *
-   * @var array
-   */
-  protected $routes = array();
-
-  /**
-   * The tested route collection.
-   *
-   * @var \Drupal\Core\Routing\LazyLoadingRouteCollection
-   */
-  protected $routeCollection;
-
-  protected function setUp() {
-    for ($i = 0; $i < 20; $i++) {
-      $this->routes['test_route_' . $i] = new Route('/test-route-' . $i);
-    }
-
-    $this->routeCollection = new TestRouteCollection($this->routes);
-  }
-
-  /**
-   * Tests iterating the lazy loading route collection.
-   *
-   * @see \Drupal\Core\Routing\LazyLoadingRouteCollection::current()
-   * @see \Drupal\Core\Routing\LazyLoadingRouteCollection::key()
-   * @see \Drupal\Core\Routing\LazyLoadingRouteCollection::rewind()
-   */
-  public function testIterating() {
-    // Execute the foreach loop twice to ensure that rewind is called.
-    for ($i = 0; $i < 2; $i++) {
-      $route_names = array_keys($this->routes);
-      $count = 0;
-      foreach ($this->routeCollection as $route_name => $route) {
-        $this->assertEquals($route_names[$count], $route_name);
-        $this->assertEquals($this->routes[$route_names[$count]], $route);
-
-        $count++;
-      }
-    }
-  }
-
-}
-
-/**
- * Wrapper class to "inject" loaded routes.
- */
-class TestRouteCollection extends LazyLoadingRouteCollection {
-
-  /**
-   * {@inheritdoc}
-   */
-  const ROUTE_LOADED_PER_TIME = 2;
-
-  /**
-   * Stores all elements.
-   *
-   * @var \Symfony\Component\Routing\Route[]
-   */
-  protected $allRoutes;
-
-  /**
-   * Creates a TestCollection instance.
-   *
-   * @param \Symfony\Component\Routing\Route[] $all_routes
-   *   Contains all the routes used in the test.
-   */
-  public function __construct(array $all_routes) {
-    $this->allRoutes = $all_routes;
-    $this->loadNextElements($this->currentRoute);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function loadNextElements($offset) {
-    $elements = array_slice($this->allRoutes, $offset, static::ROUTE_LOADED_PER_TIME);
-
-    $this->elements = $elements;
-  }
-
-}
