     }
 
     public func fetchDatabaseChanges(fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
-        let token = defaults.object(forKey: Cache.privateTokenKey) as? CKServerChangeToken
+        let token = self.token(for: Cache.privateTokenKey)
         cloud.privateDB.rx.fetchChanges(previousServerChangeToken: token).subscribe { event in
             switch event {
             case .next(let zoneEvent):

        self.fetchZoneChanges(recordZoneIDs: recordZoneIDs, fetchCompletionHandler: completionHandler)
    }

}

                    self.delegate.deleteCache(in: zoneID)
                case .token(let token):
                    print("token: \(token)")
                    self.save(token: token, for: Cache.privateTokenKey)
                    self.processAndPurgeCachedZones(fetchCompletionHandler: completionHandler)
                }
                
