public static function loadFromFiles(array $files)
    {
        $checked_files = [];
        $configs = [];
        $config = [];
        foreach ($files as $idx => $file) {
            if (!file_exists($file) || !is_readable($file)) {
                throw new \Exception(__METHOD__ . " Cannot locate configuration file: $file");
            }
            $configs[$idx] = include $file;
            if (!$configs[$idx]) {
                throw new \Exception("Cannot parse or empty configuration file '$file' ([" . implode(',', $files) . "])");
            }
            if (!array_key_exists('openstore-akilia', $configs[$idx])) {
                throw new \Exception("Config file lacks a required 'openstore-akilia' top level key in file '$file'.");
            }

            $config = array_merge_recursive($config, $configs[$idx]['openstore-akilia']);
        }

        return new OpenstoreAkiliaSetup($config);
    }