         return operationQueue
     }()
     
-    private let main = OperationQueue.main
+    fileprivate let main = OperationQueue.main
     
     
     override func viewDidLoad() {
         super.viewDidLoad()
-      
-      UserLocation.instance.requestLocation() { coordinate in
-          
-            self.prepareMapView()
-            self.loadStoresInMapView(at: coordinate)
-            self.populateStoreAnnotations()
-            
-        }
-      
-      AromaClient.beginMessage(withTitle: "User Entered Map View")
+        
+        prepareMapView()
+        loadStores()
+        
+        AromaClient.beginMessage(withTitle: "User Entered Map View")
             .addBody("Users location is: \(UserLocation.instance.currentCoordinate)")
             .withPriority(.medium)
             .send()
-      
+        
     }
     
     override func didReceiveMemoryWarning() {

    
    typealias Callback = ([StoresInfo]) -> ()
    
    let async: OperationQueue = {
        
        let operationQueue = OperationQueue()
        operationQueue.maxConcurrentOperationCount = 10

        self.mapView.setRegion(region, animated: true)
    }
    
}

//MARK: Loading Stores Into View
extension StoresMapViewController {
    
    func loadStoresInMapView(at coordinate: CLLocationCoordinate2D) {
        
        UIApplication.shared.isNetworkActivityIndicatorVisible = true
        
        let distanceInMeters = DistanceCalculation.milesToMeters(miles: Double(distance))
        
        SearchStores.searchForStoresLocations(near: coordinate, with: distanceInMeters) { stores in
            
            self.storesInMapView = stores
            
            self.main.addOperation {
                self.populateStoreAnnotations()
                UIApplication.shared.isNetworkActivityIndicatorVisible = false
            }
        }
        
    }
    
    func populateStoreAnnotations() {
        
        var annotations: [MKAnnotation] = []
        
        for store in storesInMapView {
            
            let annotation = createAnnotation(forStore: store)
            annotations.append(annotation)
        }
        
        mapView.addAnnotations(annotations)
        mapView.removeNonVisibleAnnotations()
    }
    
    private func createAnnotation(forStore store: StoresInfo) -> MKAnnotation {
        
        let storeName = store.storeName
        let address = store.address.allValues
        let location = store.location
        
        let latitude = location.latitude
        let longitude = location.longitude
        
        let annotation = MKPointAnnotation()
        annotation.coordinate.latitude = latitude
        annotation.coordinate.longitude = longitude
        annotation.title = storeName
        
        return annotation
    }
    
    
}


//MARK: Map View Delegate Methods
extension StoresMapViewController {
    
    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
