public void make(Move m) throws IllegalMoveException {
		FifteenMove fifteenMove = (FifteenMove) m;
		isGameNew = false;
		if (!isLegal(fifteenMove)) {
			throw new IllegalMoveException(fifteenMove);
		}
		if (fifteenMove.equals(new FifteenMove(QUIT))) {
			resignation(nextPlayer);
			return;
		}
		if (nextPlayer == Game.FIRST_PLAYER) {
			playerOneSet.add(fifteenMove);
			if (playerOneSet.size() >= 3)
				checkGameStatus(playerOneSet);
		} else {
			playerTwoSet.add(fifteenMove);
			if (playerOneSet.size() >= 3)
				checkGameStatus(playerTwoSet);
		}

		moveSet.remove(fifteenMove);
		if (moveSet.size() == 1) // only 0 is left behind
			gameStatus = Game.DRAW;

		nextPlayer = (nextPlayer == Game.FIRST_PLAYER ? Game.SECOND_PLAYER
				: Game.FIRST_PLAYER);
	}