final public function start()
    {
        try {
            ErrorHandler::set();
            register_shutdown_function([$this, 'shutdown']);

            $this->setEnvironmentValue();

            /**
             * With no argument, timezone will be set from the configuration.
             */
            $this->date()->setTimezone();
            /**
             * @todo i18n, log, session (if not cli), users (if not cli)
             */

            return true;
        } catch (\Throwable $e) { // php7
            $this->shutdown($e, true);
        } catch (\Exception $e) { // php5
            $this->shutdown($e, true);
        }
    }