public static ReversiAI getAIByName(String aiName) {
		if (ReversiAI.Types.GREEDY.equals(aiName)) {
			return new GreedyAI();
		} else if (ReversiAI.Types.RANDOM.equals(aiName)) {
			return new RandomAI();	
		} else if (ReversiAI.Types.HEURISTIC.equals(aiName)) {
			return new GreedyHeuristicAI();
		} else if (ReversiAI.Types.PLUGGABLE.equals(aiName)) {
			return new PluggableHeuristicAI();
		} else if (ReversiAI.Types.MINIMAX.equals(aiName)) {
			return new MinimaxAI();
		} else if (ReversiAI.Types.MINIMAX_AB.equals(aiName)) {
			return new MinimaxABAI();
		} else if (ReversiAI.Types.MINIMAX_AB_ORD.equals(aiName)) {
			return new MinimaxABAIOrdered();
		} else if (ReversiAI.Types.MINIMAX_AB_MCUT.equals(aiName)) {
			return new MinimaxABAIMulticut();
		} else if (ReversiAI.Types.MINIMAX_AB_HEU.equals(aiName)) {
			return new MinimaxABHeuristicAI();
		} else {
			throw new IllegalArgumentException("Unknown AI");
		}
	}