public boolean applyMove(Move m) {
		// illegal move
		if (!legalMove(m))
			return false;
		
		lastHexpos[0] = m.begin;
		lastHexpos[1] = m.end;
		
		// in case of a jump move, empty the beginning square
		if (m.begin.jumpNeighbour(m.end))
			changeOwner(null, m.begin);

		// let the player become owner of the goal square
		changeOwner(m.player, m.end);

		// take over neighbouring pieces
		takeNeighbours(m.player, m.end);

		// change who's turn it is
		turn = otherPlayer(turn);

		return true;
	}