         #if !DEBUG
             Crashlytics.start(withAPIKey: Keys.fabricAPIKey.value)
         #endif
-
-        // Set Up Google Services
-        FirebaseApp.configure()
-        GMSServices.provideAPIKey(Keys.googleMaps.value)
-        GMSPlacesClient.provideAPIKey(Keys.googlePlaces.value)
 
         // Log basic information
         let payload = AppLaunchedPayload()

        if let shortcutData = item.userInfo as? [String: Data] {
            guard
                let place = shortcutData["place"],
                let destination = NSKeyedUnarchiver.unarchiveObject(with: place) as? Place
            else {
                print("[AppDelegate] Unable to access shortcutData['place']")
                return

    }
    
    // MARK: Helper Functions
    
    /// Convert BusStop and PlaceResult models to new unified Place model.
    func migrationToNewPlacesModel() {
        
        // Potentially check version to make sure this only fires once.
        
        //
        // allStops
        //
        
        // should overwrite existing values
        // getBusStops()
        
        //
        // favorites
        //
        
        let favoritesKey = Constants.UserDefaults.favorites
        
        if let storedPlaces = userDefaults.value(forKey: favoritesKey) as? Data {
            // This will only fire on legacy models
            if let favorites = NSKeyedUnarchiver.unarchiveObject(with: storedPlaces) as? [Any] {
                convertDataToPlaces(data: favorites) { (places) in
                    do {
                        let encodedObject = try self.encoder.encode(places)
                        self.userDefaults.set(encodedObject, forKey: favoritesKey)
                    } catch let error {
                        print(error)
                    }
                }
            }
        }
        
        // Update shortcuts
        // Done in main AppDelegate.swift function
        
        //
        // recentSearches
        //
        
        let recentSearchesKey = Constants.UserDefaults.recentSearch
        
        if let storedPlaces = userDefaults.value(forKey: recentSearchesKey) as? Data {
            //  This will only fire on legacy models
            if let recents = NSKeyedUnarchiver.unarchiveObject(with: storedPlaces) as? [Any] {
                convertDataToPlaces(data: recents) { (places) in
                    do {
                        let encodedObject = try self.encoder.encode(places)
                        self.userDefaults.set(encodedObject, forKey: recentSearchesKey)
                    } catch let error {
                        print(error)
                    }
                }
            }
        }
        
        // Should show a loading function until everything in here finishes. "Updating database"

    }
    
    func convertDataToPlaces(data: [Any], completion: @escaping (_ places: [Place]) -> Void) {
        var places = [Place]()
        for item in data {
            
            var place: Place!
            
            // Unwrap `Any` to `BusStop` or `PlaceResult`
            if let busStop = item as? BusStop {
                place = Place(name: busStop.name, latitude: busStop.lat, longitude: busStop.long)
            }
            if let placeResult = item as? PlaceResult {
                place = Place(name: placeResult.name, placeDescription: placeResult.detail, placeIdentifier: placeResult.placeID)
            }
            
            
            
            if place.type == .googlePlace {
                CoordinateVisitor.getCoordinates(for: place) { (latitude, longitude, error) in
                    if error != nil {
                        // TODO: Handle error properly
                        print("Unable to get coordinates to save favorite.")
                    } else {
                        place.latitude = latitude
                        place.longitude = longitude
                        places.append(place)
                    }
                    if places.count == data.count {
                        completion(places)
                    }
                }
            } else {
                places.append(place)
                if places.count == data.count {
                    completion(places)
                }
            }
            
        } // end for loop
        
    }
    
    /// Creates and sets a unique identifier. If the device identifier changes, updates it.
    func setupUniqueIdentifier() {
