public void revealNearbyEmptyFields(final int row, final int column) {
		final List<Position> positions = new ArrayList<Position>();

		positions.add(new Position(row, column));

		for (int i = 0; i < positions.size(); i++) {
			final Position pos = positions.get(i);

			/*
			 * add nearby hidden empty fields to queue
			 */
			if (isHiddenAndEmpty(pos.row - 1, pos.column + 1)) { // top-right
				positions.add(new Position(pos.row - 1, pos.column + 1));
			}
			if (isHiddenAndEmpty(pos.row - 1, pos.column)) { // top
				positions.add(new Position(pos.row - 1, pos.column));
			}
			if (isHiddenAndEmpty(pos.row - 1, pos.column - 1)) { // top-left
				positions.add(new Position(pos.row - 1, pos.column - 1));
			}
			if (isHiddenAndEmpty(pos.row, pos.column - 1)) { // left
				positions.add(new Position(pos.row, pos.column - 1));
			}
			if (isHiddenAndEmpty(pos.row, pos.column + 1)) { // right
				positions.add(new Position(pos.row, pos.column + 1));
			}
			if (isHiddenAndEmpty(pos.row + 1, pos.column + 1)) { // bottom-right
				positions.add(new Position(pos.row + 1, pos.column + 1));
			}
			if (isHiddenAndEmpty(pos.row + 1, pos.column)) { // bottom
				positions.add(new Position(pos.row + 1, pos.column));
			}
			if (isHiddenAndEmpty(pos.row + 1, pos.column - 1)) { // bottom-left
				positions.add(new Position(pos.row + 1, pos.column - 1));
			}

			/*
			 * As the current position is always empty, we can reveal every
			 * field around it
			 */
			controller.revealPosition(pos.row - 1, pos.column + 1); // top-right
			controller.revealPosition(pos.row - 1, pos.column); // top
			controller.revealPosition(pos.row - 1, pos.column - 1); // top-left
			controller.revealPosition(pos.row, pos.column - 1); // left
			controller.revealPosition(pos.row, pos.column + 1); // right
			controller.revealPosition(pos.row + 1, pos.column + 1); // bottom-right
			controller.revealPosition(pos.row + 1, pos.column); // bottom
			controller.revealPosition(pos.row + 1, pos.column - 1); // bottom-left
		}
	}