public synchronized int makeMove(int player, Vector<Integer> poses) {
        if(state.getNextPlayer() == player) {
        	//It is indeed this player's turn
        	
        	Move wantedMove = new Move(poses);
        	
        	int nm = -1;
			for (int i = 0;i<lNextMoves.size();i++) {
				if (wantedMove.equals(lNextMoves.get(i))) {
					nm = i;
					wantedMove = lNextMoves.get(i);
					break;
				}
			}
        	
        	if (nm >= 0) {	//Legal move!
				//state = new GameState(state,wantedMove);	//Don't uncomment!
				state.doMove(wantedMove);
				stateString = state.toMessage();
				state.findPossibleMoves(lNextMoves);
				
				//Check if the only next move is admitting draw or loss
				if (lNextMoves.size() == 0) {
					//No possible moves! You lose!
					//This shouldn't be possible anyway
					System.err.println("findPossibleMoves() ran, despite game being finished!");
				} else if (lNextMoves.size() == 1) {
					int t = lNextMoves.get(0).getType();
					if (t == Move.MoveType.MOVE_DRAW.getInternalValue() ||
		t == Move.MoveType.MOVE_RW.getInternalValue() ||
		t == Move.MoveType.MOVE_WW.getInternalValue()) 
					{
						//Only next move is draw or admit loss
						state.doMove(wantedMove);
						stateString = state.toMessage();
						finished = true;
						return 1;
					}
				}
				
				//Otherwise, indicate success!
        		return 0;
        	} else {
        		//Move not in lNextMoves, not legal!
        		//Don't update game.
        		return -1;
        	}
        } else {
        	//Not this player's turn
        	return -2;
        }
    }