             .flatMapLatest { return googleMapService.searchPlaces(with: $0.0, currentLocation: $0.1) }
             .startWith([])
 
-        let personalOrHistoryOb = shared
+        let placesFromHistoryObjs = textPubShare
             .distinctUntilChanged()
             .filter({ $0.isEmpty })
             .withLatestFrom(personalOrHistoryPlacesVar.asObservable())
             .startWith([])
 
-        let searchPlaceData = Observable.combineLatest(shared, personalOrHistoryOb, searchPlaceOb) { (condition, thenObs, elseObs) -> [PlaceObj] in
-            if condition.isEmpty {
-                return thenObs
+        // Combine with IF-ELSE
+        let searchPlaceData
+            = Observable.combineLatest(textPubShare,
+                          placesFromHistoryObjs,
+                          placesFromGooleObs) { (condition, thenObs, elseObs) -> [PlaceObj] in
+                if condition.isEmpty {
+                    return thenObs
+                }
+                return elseObs
             }
-            return elseObs
-        }
 
         // Merage into searchPlace
         let searchFinishOb = Observable.merge([searchPlaceData,

        let historyPlace = uberService.historyObserver

        Observable.combineLatest([personalPlace, historyPlace])
            .map { (combine) -> [PlaceObj] in
                let personPlaces = combine.first!
                let historyPlaces = combine.last!
                return personPlaces + historyPlaces
            }.bind(to: personalOrHistoryPlacesVar)
            .addDisposableTo(disposeBag)

        // Trigger
        uberService.reloadHistoryTrigger.onNext()

        // Text Search
        let shared = textSearchPublish
            .asObservable()
            .share()

        // Reset Empty data while fetching
        let emptyOb = shared
            .filter({ !$0.isEmpty })
            .map { _ -> [PlaceObj] in return [] }

        // Search from Google Service
        let searchPlaceOb = shared
            .filter { !$0.isEmpty }
            .debounce(0.3, scheduler: MainScheduler.instance)
            .distinctUntilChanged()

                uberService.reloadHistoryTrigger.onNext()
            })
            .addDisposableTo(disposeBag)
    }
}
