@Override
	public void joinGame(IPresenter presenter, CatanColor color, int gameID) {
		JoinGameResponse joinResponse = presenter.getProxy().joinGame(color, gameID, presenter.getCookie());
		presenter.setPlayerDescriptionsForGame(presenter.getGames().get(gameID).getPlayerDescriptions());
		presenter.setCookie(joinResponse.getCookie());
		GetGameModelResponse modelResponse = presenter.getProxy().getGameModel(-1, presenter.getCookie());
		if(modelResponse.isNeedToUpdate()) {
			// Can we start playing?
			List<Player> players = new ArrayList<Player>(modelResponse.getGameModel().getPlayers());
			players.removeAll(Collections.singleton(null));
			if(players.size() == 4) {
				presenter.setStateBasedOffString(modelResponse.getGameModel().getTurnTracker().getStatus());
			}
			else {
				presenter.setState(new PlayerWaiting());
			}
			
			presenter.getPlayerInfo().setIndex(modelResponse.getGameModel().getPlayerIndexByID(presenter.getPlayerInfo().getID()));
			presenter.updateServerModel(modelResponse.getGameModel());
		}
		else {
			System.err.println("Error: Unable to process update game model request!");
		}
	}