public void load()
    {
        bans = new HashMap<String, Long>();
        ipBans = new LinkedList<String>();
        mutes = new HashMap<String, Long>();
        persistMutes = false;
        broadcastKick = false;
        broadcastMute = false;
        broadcastBan = false;
        muteLimit = 0;
        banLimit = 0;
        
        try
        {
            // load bans
            String banString = instance.getConfig().getString("bans");
            if (banString.length() > 0)
            {
                // if we recovered an error here, set node
                if (decodeList(bans, banString.split(",")))
                    save("bans", bansString());
            }
            
            // load IP bans
            String ipBanString = instance.getConfig().getString("ipbans");
            if (ipBanString.length() > 0)
                ipBans.addAll(Arrays.asList(ipBanString.split(",")));
            
            // load setting to persist mutes through sessions or not
            persistMutes = instance.getConfig().getBoolean("persist-mutes", false);
            
            // if we are persisting mutes, load pre-existing ones
            if (persistMutes)
            {
                String muteString = instance.getConfig().getString("mutes");
                if (muteString.length() > 0)
                {
                    // if we recovered an error here, set node
                    if (decodeList(this.mutes, muteString.split(",")))
                        save("mutes", mutesString());
                }
            }
            
            // make sure broadcast path is in config
            if (!instance.getConfig().contains("broadcast"))
            {
                configGen.genBroadcast();
                instance.saveConfig();
            }
            
            // load broadcast settings
            broadcastKick = instance.getConfig().getBoolean("broadcast.kick");
            broadcastMute = instance.getConfig().getBoolean("broadcast.mute");
            broadcastBan = instance.getConfig().getBoolean("broadcast.ban");
            
            // make sure limit path is in config
            if (!instance.getConfig().contains("limit"))
            {
                configGen.genLimit();
                instance.saveConfig();
            }
            
            // load limit settings
            muteLimit = instance.getConfig().getInt("limit.mute");
            banLimit = instance.getConfig().getInt("limit.ban");
        }
        // config file couldn't be read
        catch (NullPointerException npe)
        {
            // generate new config
            instance.getLogger().warning("Null when loading config, generating new config!");
            instance.getLogger().log(Level.FINEST, "NPE when loading config.", npe);
            configGen.genConfig();
            instance.saveConfig();
        }
    }