public function boot()
    {
        if (true === $this->booted) {
            return;
        }

        // init container
        $this->initializeContainer();

        // init bundles
        $this->initializeBundles();

        foreach ($this->getBundles() as $bundle) {
            if ($bundle instanceof ContainerAwareInterface) {
                $bundle->setContainer($this->container);
            }

            $bundle->boot();
        }

        $this->booted = true;

        // Load routes from bundles
        $this->loadRoutes();

        // Register events from Bundles
        $this->registerEvents();
    }