private function initializeEnvironmentInternal()
    {
        // validate the environment
        $environments = $this->applicationConfig->get('Application.Environments', false);

        if($environments){
            // get the production environment
            $productionEnv = $environments->get('Production', false);
            if (!$productionEnv) {
                throw new BootstrapException('Production environment must always be defined in App/Config/App.yaml');
            }
        }

        // get the name of the current environment
        $currentEnvName = $this->getCurrentEnvironmentName();

        // load the production environment configs
        $this->componentConfigs = $this->loadConfigurations('Production');

        // check if the current env is different from Production
        if ($currentEnvName != 'Production') {
            $currentConfigs = $this->loadConfigurations($currentEnvName);
            $this->componentConfigs->mergeWith($currentConfigs);
        }
    }