public static function run()
    {
        if (self::$isInit === true) {
            if ((self::$rawRequest instanceof RawRequest) === false) {
                throw new RuntimeException('Raw request was not specified!');
            }
            self::$request = new Request(self::$rawRequest, self::$routes);
            self::$controllers = array();
            self::$response = new Response();
            try {
                ob_start();
                $before = self::$request->getBefore();
                foreach ($before as $b) {
                    $controller = Controllers::get($b['class']);
                    $action = $b['action'];
                    $controller->$action(self::$request, self::$response);
                    if (self::$request->hasEnded() === true) {
                        break;
                    }
                }
                if (self::$request->hasEnded() === false) {
                    $controller = Controllers::get(self::$request->getClass());
                    $action = self::$request->getAction();
                    $controller->$action(self::$request, self::$response);
                    if (self::$request->hasEnded() === false) {
                        $after = self::$request->getAfter();
                        foreach ($after as $a) {
                            $controller = Controllers::get($a['class']);
                            $action = $a['action'];
                            $controller->$action(self::$request, self::$response);
                        }
                    }
                }
                $render = self::$response->getRender();
                if (!($render instanceof RenderInterface)) {
                    throw new NotARender('response->render is a non RenderInterface implementing object');
                }
                echo $render->render(self::$response->data);
                ob_end_flush();
            } catch (\Exception $e) {
                ob_end_clean();
                throw $e;
            }
        }
    }