     
     // MARK: - Place Grouping
     
-    var groupingTaskGroup: WMFTaskGroup?
-    var needsRegroup = false
-    var showingAllImages = false
+    private var groupingTaskGroup: WMFTaskGroup?
+    private var needsRegroup = false
+    private var showingAllImages = false
     
     func regroupArticlesIfNecessary(forVisibleRegion visibleRegion: MKCoordinateRegion) {
         guard groupingTaskGroup == nil else {

class PlacesViewController: UIViewController, MKMapViewDelegate, UISearchBarDelegate, ArticlePopoverViewControllerDelegate, UITableViewDataSource, UITableViewDelegate, PlaceSearchSuggestionControllerDelegate, WMFLocationManagerDelegate, NSFetchedResultsControllerDelegate, UIPopoverPresentationControllerDelegate, EnableLocationViewControllerDelegate, ArticlePlaceViewDelegate {
    
    @IBOutlet weak var redoSearchButton: UIButton!
    let locationSearchFetcher = WMFLocationSearchFetcher()
    let searchFetcher = WMFSearchFetcher()
    let previewFetcher = WMFArticlePreviewFetcher()
    let wikidataFetcher = WikidataFetcher()
    
    let locationManager = WMFLocationManager.fine()
    
    let animationDuration = 0.6
    let animationScale = CGFloat(0.6)
    let popoverFadeDuration = 0.25
    let searchHistoryCountLimit = 15
    
    @IBOutlet weak var mapView: MKMapView!
    @IBOutlet weak var progressView: UIProgressView!
    @IBOutlet weak var listView: UITableView!
    @IBOutlet weak var searchSuggestionView: UITableView!
    @IBOutlet weak var recenterOnUserLocationButton: UIButton!
    
    var searchSuggestionController: PlaceSearchSuggestionController!
    
    var searchBar: UISearchBar!
    var siteURL: URL = NSURL.wmf_URLWithDefaultSiteAndCurrentLocale()!

    var articleStore: WMFArticleDataStore!
    var dataStore: MWKDataStore!
    var segmentedControl: UISegmentedControl!
    var segmentedControlBarButtonItem: UIBarButtonItem!
    
    var closeBarButtonItem: UIBarButtonItem!

    
    var currentGroupingPrecision: QuadKeyPrecision = 1
    
    let searchHistoryGroup = "PlaceSearch"
    
    var maxGroupingPrecision: QuadKeyPrecision = 16
    var groupingPrecisionDelta: QuadKeyPrecision = 4
    var groupingAggressiveness: CLLocationDistance = 0.67
    
    var selectedArticlePopover: ArticlePopoverViewController?
    var selectedArticleKey: String?
    
    var placeToSelect: ArticlePlace?
    var articleKeyToSelect: String?
    
    var currentSearchRegion: MKCoordinateRegion?
    
    var performDefaultSearchOnNextMapRegionUpdate = false
    var previouslySelectedArticlePlaceIdentifier: String?
    var searching: Bool = false

    // MARK: - View Lifecycle
    

    
    // MARK: - Map Region
    
    private var _mapRegion: MKCoordinateRegion?
    
    private var mapRegion: MKCoordinateRegion? {
        set {
            guard let value = newValue else {
                _mapRegion = nil
