 
         let search = MKLocalSearch(request: request)
 
-        search.startWithCompletionHandler { response, error in
+        search.startWithCompletionHandler { [weak self] response, error in
             if error == nil {
                 if let mapItems = response.mapItems as? [MKMapItem] {
 
-                    self.searchedMapItems = mapItems.filter({ $0.placemark.name != nil })
-
-                    self.mapView.removeAnnotations(self.searchedLocationPins)
+                    let searchedMapItems = mapItems.filter({ $0.placemark.name != nil })
+
+                    if needAppend {
+                        self?.searchedMapItems += searchedMapItems
+
+                    } else {
+                        self?.searchedMapItems = searchedMapItems
+
+                        self?.mapView.removeAnnotations(self?.searchedLocationPins)
+                    }
 
                     var searchedLocationPins = [UserPickedLocationPin]()
 
-                    for item in mapItems {
+                    for item in searchedMapItems {
                         let pin = UserPickedLocationPin(title: "Pin", subtitle: "User Searched Location", coordinate: item.placemark.location.coordinate)
-                        self.mapView.addAnnotation(pin)
+                        self?.mapView.addAnnotation(pin)
 
                         searchedLocationPins.append(pin)
                     }
-                    
-                    self.searchedLocationPins = searchedLocationPins
+
+                    if needAppend {
+                        self?.searchedLocationPins += searchedLocationPins
+                    } else {
+                        self?.searchedLocationPins = searchedLocationPins
+                    }
                 }
             }
         }

    var searchedLocationPins = [UserPickedLocationPin]()

    lazy var geocoder = CLGeocoder()
    var placemarks = [CLPlacemark]() {
        didSet {
            reloadTableView()

        shrinkSearchLocationView()
    }

    private func searchPlacesByName(name: String, needAppend: Bool = false) {

        let request = MKLocalSearchRequest()
        request.naturalLanguageQuery = name
