diff --git a/core/includes/common.inc b/core/includes/common.inc
index eeb3fa85d555cb1a775e46778d4b5c69c3f8da39..a4fcf511ce198c0e056813364ccaddc85f547d82 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -5091,7 +5091,6 @@ function _drupal_bootstrap_full() {
   require_once DRUPAL_ROOT . '/core/includes/theme.inc';
   require_once DRUPAL_ROOT . '/core/includes/pager.inc';
   require_once DRUPAL_ROOT . '/' . variable_get('menu_inc', 'core/includes/menu.inc');
-  require_once DRUPAL_ROOT . '/core/includes/router.inc';
   require_once DRUPAL_ROOT . '/core/includes/tablesort.inc';
   require_once DRUPAL_ROOT . '/core/includes/file.inc';
   require_once DRUPAL_ROOT . '/core/includes/unicode.inc';
diff --git a/core/includes/router.inc b/core/includes/router.inc
deleted file mode 100644
index 26670db749dd18967b8f1a1f90efb4647f66451c..0000000000000000000000000000000000000000
--- a/core/includes/router.inc
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Routing\RequestContext;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
-use Symfony\Component\HttpKernel\HttpKernel;
-use Symfony\Component\HttpKernel\Controller\ControllerResolver;
-use Symfony\Component\HttpKernel\KernelEvents;
-use Symfony\Component\EventDispatcher\EventDispatcher;
-use Symfony\Component\EventDispatcher\Event;
-use Drupal\Core\UrlMatcher;
-
-/**
- * Execute the page callback associated with given request.
- *
- * @param Request $request
- *   The Symfony Request object used to determine what will be executed.
- * @return Response
- *   A Symfony Response object describing the response to deliver to the client.
- */
-function router_execute_request(Request $request) {
-
-  try {
-    // Resolve a routing context(path, etc) using the routes object to a
-    // Set a routing context to translate.
-    $context = new RequestContext();
-    $context->fromRequest($request);
-    $matcher = new UrlMatcher($context);
-    // Push path paramaters into attributes.
-    $request->attributes->add($matcher->match($request->getPathInfo()));
-
-    // Get the controller(page callback) from the resolver.
-    $resolver = new ControllerResolver();
-    $controller = $resolver->getController($request);
-    $arguments = $resolver->getArguments($request, $controller);
-
-    $dispatcher = new EventDispatcher();
-    // Quick and dirty attempt at wrapping our rendering logic as is.
-    $dispatcher->addListener(KernelEvents::VIEW, function(Event $event) {
-      $page_callback_result = $event->getControllerResult();
-      $event->setResponse(new Response(drupal_render_page($page_callback_result)));
-    });
-
-    $kernel = new HttpKernel($dispatcher, $resolver);
-    return $kernel->handle($request);
-  }
-  catch (ResourceNotFoundException $e) {
-    $response = new Response('Not Found', 404);
-  }
-  //catch (Exception $e) {
-  //  $response = new Response('An error occurred', 500);
-  //}
-
-  return $response;
-}
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
new file mode 100644
index 0000000000000000000000000000000000000000..f7dd25998a027ee17b1c3556c720f3b2e9c41514
--- /dev/null
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Drupal\Core;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\Routing\RequestContext;
+use Symfony\Component\Routing\Exception\ResourceNotFoundException;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+use Symfony\Component\HttpKernel\HttpKernel;
+use Symfony\Component\HttpKernel\Controller\ControllerResolver;
+use Symfony\Component\HttpKernel\KernelEvents;
+use Symfony\Component\EventDispatcher\EventDispatcher;
+use Symfony\Component\EventDispatcher\Event;
+
+/**
+ * @file
+ *
+ * Definition of Drupal\Core\DrupalKernel.
+ */
+
+/**
+ * The DrupalKernel is the main routing and dispatching routine in Drupal.
+ */
+class DrupalKernel implements HttpKernelInterface {
+
+  function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) {
+    try {
+      // Resolve a routing context(path, etc) using the routes object to a
+      // Set a routing context to translate.
+      $context = new RequestContext();
+      $context->fromRequest($request);
+      $matcher = new UrlMatcher($context);
+      // Push path paramaters into attributes.
+      $request->attributes->add($matcher->match($request->getPathInfo()));
+
+      // Get the controller(page callback) from the resolver.
+      $resolver = new ControllerResolver();
+      $controller = $resolver->getController($request);
+      $arguments = $resolver->getArguments($request, $controller);
+
+      $dispatcher = new EventDispatcher();
+      // Quick and dirty attempt at wrapping our rendering logic as is.
+      $dispatcher->addListener(KernelEvents::VIEW, function(Event $event) {
+        $page_callback_result = $event->getControllerResult();
+        $event->setResponse(new Response(drupal_render_page($page_callback_result)));
+      });
+
+      $kernel = new HttpKernel($dispatcher, $resolver);
+      return $kernel->handle($request);
+    }
+    catch (ResourceNotFoundException $e) {
+      $response = new Response('Not Found', 404);
+    }
+    //catch (Exception $e) {
+    //  $response = new Response('An error occurred', 500);
+    //}
+
+    return $response;
+  }
+}
diff --git a/index.php b/index.php
index 50cafff9c50865a71cf46f88f102d4a538c60b73..8002359d2ed8aee28771ee26845d7bed32e9893f 100644
--- a/index.php
+++ b/index.php
@@ -1,5 +1,7 @@
 <?php
 
+use Drupal\Core\DrupalKernel;
+
 /**
  * @file
  * The PHP page that serves all page requests on a Drupal installation.
@@ -24,7 +26,10 @@
 
 // A request object from the HTTPFoundation to tell us about the request.
 $request = Request::createFromGlobals();
-// Run our router, get a response.
-$response = router_execute_request($request);
+// Run our kernel, get a response, and send it.
+$kernel = new DrupalKernel();
+$kernel->handle($request)->send();
+
+//$response = router_execute_request($request);
 // Output response.
-$response->send();
+//$response->send();