public boolean isSatisfied(int x, int y) {
		//first check the square is actually non-mine
		if (board[x][y].isMine()) return false;

		//the square must also have at least 1 adjacent mine
		if (board[x][y].numMines() == 0) return false;

		int surrounding = 0;

		for (int i = x - 1; i <= x + 1; i++) {
			for (int j = y - 1; j <= y + 1; j++) {
				//position must exist, and we don't count centre square
				if (!positionExists(i, j) || (i == x && j == y)) continue;
				if (board[i][j].isFlagged()) surrounding++;
			}
		}

		return surrounding == board[x][y].numMines();
	}