Catalog(final Plugin plugin, final Repository repository, final ConfigurationSection options) {
        this.plugin = plugin;
        this.repository = repository;
        this.serverDefault = repository.loadDefault(null);

        if (options != null)
            for (final String key : options.getKeys(false)) {
                try {
                    final Option option = Option.create(plugin, options.getString(key));
                    this.options.put(key, option);
                } catch (final Exception e) {
                    plugin.getLogger().warning("Unable to load option: " + key + "; " + e);
                }
            }

        for (final World world : plugin.getServer().getWorlds()) this.loadIndex(world);
        plugin.getServer().getPluginManager().registerEvents(this, plugin);
    }