public function initApps()
    {
        if (count($this->apps) > 0) {
            throw new AlreadyInitiatedException('The apps are already loaded!');
        }

        foreach ($this->appList as $className) {
            $instance = new $className($this);
            $this->apps->append($instance);
        }

        // Let the apps configure itself.
        foreach ($this->apps as $app) {
            $app->load();
        }

        // Let the apps register it parts.
        foreach ($this->apps as $app) {
            $app->registerRoutes(Router::getInstance());
        }
    }