         let filteredPlaces = PlaceUtilities.filterPlacesForCarousel(places)
         return PlaceUtilities.sort(places: filteredPlaces, byTravelTimeFromLocation: location, ascending: true, completion: { sortedPlaces in
             self.placesLock.withWriteLock {
-                self.places = sortedPlaces
+                self.displayedPlaces = sortedPlaces
             }
             DispatchQueue.main.async {
                 self.placesLock.withReadLock {
-                    self.delegate?.placesProvider(self, didReceivePlaces: self.places)
+                    self.delegate?.placesProvider(self, didReceivePlaces: self.displayedPlaces)
                 }
                 if self.firstFetch {
                     self.delegate?.placesProviderDidFetchFirstPlace()

    }

    func allPlaces() -> [Place] {
        return places
    }

    func sortPlaces(byLocation location: CLLocation) {
        self.placesLock.withWriteLock {
            let sortedPlaces = PlaceUtilities.sort(places: places, byDistanceFromLocation: location)
            self.places = sortedPlaces
        }
    }
}

            var fetchedPlaces = [Deferred<DatabaseResult<Place>>]()
            self.placesLock.withReadLock {
                for placeKey in Array(placeKeyToLoc.keys) {
                    if let index = self.placeKeyMap[placeKey] {
                        let place = self.displayedPlaces[index]
                        fetchedPlaces.append(Deferred(filledWith: DatabaseResult.succeed(value: place)))
                    } else {
                        unfetchedPlaces.append(placeKey)
