@Override
	public ServerModel buildRoad(BuildRoadRequest request, CookieParams cookie) throws InvalidMovesRequest {
		if(request == null) {
			throw new InvalidMovesRequest("Error: invalid build city request");
		} 
		
		ServerModel serverGameModel = serverModels.get(cookie.getGameID());
		
		//execute
		int playerIndex = request.getPlayerIndex();
		Player player = serverGameModel.getPlayers().get(playerIndex);
		int x = request.getRoadLocation().getX();
		int y = request.getRoadLocation().getY(); 
		String direction = request.getRoadLocation().getDirectionStr();
		Road road = new Road(playerIndex, x, y , direction);
		serverGameModel.getMap().getRoads().add(road);
		serverGameModel.incrementVersion();
		
		player.decrementRoads();
		
		if (!request.isFree()) {
			player.decrementBrick();
			player.decrementWood();
			serverGameModel.getBank().brick += 1;
			serverGameModel.getBank().wood += 1;
		}

		checkForLongestRoad(serverGameModel, playerIndex);
		
		return serverGameModel;
	}