public function route($methods, string $pattern, $callback)
  {
    $methods = explode("|", $methods);
    if (empty($methods))
      throw new \RuntimeException('Invalid methods provided');

    $methods = $this->validateMethods($methods);
    foreach ($methods as $method)
      $this->routes[$method][] = [
        "pattern" => trim($pattern, '/'),
        "callback" => $callback,
      ];

    return $this;
  }