     var storeFilterStr = ""
     
     var storeFilterPredicate: NSPredicate?
+    
+    var storeFilterTracker = [String:NSPredicate]()
     
     var locationInfoDict: [String: Any]?
     

            }
            
            let filteredStores = (storeEntities as NSArray).filtered(using: strongSelf.storeFilterPredicate!)
            
            strongSelf.stores = filteredStores as! [Store]
            //strongSelf.stores.forEach {print("Store Name: \($0.name)")}
            
            strongSelf.delegate?.handleStoresUpdated(forLocation: strongSelf.mapLocation!)
        })
    }

                    }
                }
            }
            
            // Have we seen this search string before? If yes, maybe no need to load from server
            if strongSelf.storeFilterTracker[searchStr] != nil {
                strongSelf.stores = strongSelf.modelManager.getAllStoresOnMainThread()
                let filteredStores = (strongSelf.stores as NSArray).filtered(using: strongSelf.storeFilterTracker[searchStr]!)
                strongSelf.stores = filteredStores as! [Store]
                strongSelf.delegate?.handleStoresUpdated(forLocation: strongSelf.mapLocation!)
            } else {
                strongSelf.storeFilterTracker[searchStr] = strongSelf.storeFilterPredicate
                strongSelf.doLoadStores(deleteOld: false)
            }
        })
    }
    
    func doLoadStores(deleteOld: Bool) {
        
        //stores.removeAll()
        
        modelManager.loadStoresFromServer(storeFilter: storeFilterStr, withDeleteOld: deleteOld, storesViewModelUpdater: { [weak self] storeEntities -> Void in
            
