public function route(array $classMap, array $errorMap = null) {
    $this->classMap = $classMap;
    $this->errorMap = $errorMap === null ? self::$defaultErrorMap : array_merge(self::$defaultErrorMap, $errorMap);

    $pageMapper = new PageMapper($this->getClassMap());
    $page = $pageMapper->getPage();

    if ($page == null && $this->fallThrough) {
      // do nothing, if no page is found and the router should fall through
      return;
    }

    $pageResolver = new PageResolver($this, $page, $pageMapper->getUriVariables(), $this->errorMap);
    $pageResolver->evaluateWebPage();
    $pageResolver->createHeader();
    $echo = $pageResolver->getRequestBody();

    // do not print if this is a test
    if (!$this->test) {
      print $echo;
    }
  }