public function boot()
    {
        try {
            $this->initialiseConfiguration();
            $this->initialiseSession();
            $this->initialiseContainer();
            $this->initialiseModules();
        } catch (\Exception $e) {
            $this->setSafeMode(true);

            // Attempt to boot in safe mode to allow the application to properly
            // handle the exception - if possible.
            $this->boot();

            throw $e;
        }

        $this->booted = true;
    }