public Player advanceToNextPlayer() {
		
		List<Player> playersToRemove = new ArrayList<Player>();
		for(Player player : players){
			if(player.eliminated()){
				playersToRemove.add(player);
				nameToOutWriter.get(player.toString()).println(Commands.DEFEAT);
			}
		}
		
		nextPlayer = getNextPlayer(playersToRemove);
		
		
		if(players.size() == 1){
			nameToOutWriter.get(players.get(0).toString()).println(Commands.VICTORY);
			gameHistory += players.get(0) + " WON THE GAME!";
			return null;
		}
		else{
			for(Player player : players){
				if(player.toString().equals(nextPlayer.toString())){
					Map<String,Action> textToAction = playerActionMaps.get(player.toString());
					String enabledActions = "";
					for(Entry<String,Action> actionEntry : textToAction.entrySet()){
						if(actionEntry.getValue().canPerformAction(player)){
							enabledActions += (actionEntry.getKey() + "++");
						}
					}
					nameToOutWriter.get(player.toString()).println(Commands.ActionsEnable.toString()+"+++"+enabledActions);
				}else{
					nameToOutWriter.get(player.toString()).println(Commands.ActionsDisable.toString() + ":" + nextPlayer);
				}
			}
			return nextPlayer;
		}
		
	}