public function loadFile($path = null)
    {
        $config = null;

        // try loading files
        if (!empty($path) && file_exists($path)) {
            // try $path
            $config = $this->includeFile($path);

            if (!$config) {
                throw new ShopgateLibraryException(
                    ShopgateLibraryException::CONFIG_READ_WRITE_ERROR,
                    'The passed configuration file "' . $path . '" does not exist or does not define the $shopgate_config variable.'
                );
            }
        } else {
            // try myconfig.php
            $config = $this->includeFile($this->buildConfigFilePath());

            // if unsuccessful, use default configuration values
            if (!$config) {
                return;
            }
        }

        // if we got here, we have a $shopgate_config to load
        $unmappedData = parent::loadArray($config);
        $this->mapAdditionalSettings($unmappedData);
    }