public synchronized void  initialize() {
		// Max team size
		Object cMax = plugin.getConfig().get("bombermine.ctfgame.max_team_players");
		if(cMax instanceof Integer) {
			this.maxTeamPlayers = (Integer)cMax;
		}
		else if(cMax instanceof String) {
			try {
				this.maxTeamPlayers = new Integer(Integer.parseInt((String)cMax));
			}
			catch(NumberFormatException nfe) {
				this.maxTeamPlayers = null;
			}
		}
		if(this.maxTeamPlayers == null){
			this.maxTeamPlayers = plugin.getConfig().getDefaults().getInt("bombermine.ctfgame.max_team_players");
		}
		
		// Reading teams from config file
		this.teams.clear();
		List<Map<String, Object>> configTeams = plugin.getConfig().getMapList("bombermine.teams");
		for (Map<String, Object> teamConfigMap : configTeams) {
			if (teamConfigMap instanceof Map) {
				String color = (String) teamConfigMap.get("color");
				if (color != null) {
					Team cTeam = new Team(this);
					if (cTeam.initialize(teamConfigMap)) {
						this.teams.put(color, cTeam);
					} else {
						Bombermine.log.warning(String.format("Team with color %s failed to load.", color));
					}
				}
			}
		}
		
		// Initialize home world
		String homeWorld = this.plugin.getConfig().getString("bombermine.ctfgame.home_world");
		this.world = plugin.getServer().getWorld(homeWorld);
		if (world == null) {
			world = plugin.getServer().getWorlds().get(0);
			this.plugin.getConfig().set("bombermine.ctfgame.home_world", world.getName());
			this.plugin.saveConfig();
		}

		Bombermine.log.info(String.format("Loading %d teams from config file.", teams.size()));
	}