public void revealSurrounding(int x, int y) {
		if (!board.positionExists(x, y)) return;

		Square s = board.getSquare(x, y);

		if (!s.isRevealed() || s.isMine() || !board.isSatisfied(x, y)) return;

		for (int i = x - 1; i <= x + 1; i++) {
			for (int j = y - 1; j <= y + 1; j++) {
				if (!board.positionExists(i, j)) continue;
				internalReveal(i, j);
			}
		}

		//notify the listener the move is finished
		listener.moveFinished();
	}