         case none
     }
     
-    public init(context: NSManagedObjectContext, request: NSFetchRequest<NSFetchRequestResult>, includeChanges: Columns = .all, callback: CDCallback? = nil) {
+    public init(context: NSManagedObjectContext, request: NSFetchRequest<NSFetchRequestResult>?, includeChanges: Columns = .all, callback: CDCallback? = nil) {
         self.context = context
         self.request = request
         self.callback = callback

    }
    
    public func fetch() {
        do {
            let results = try context.fetch(request) as! [NSManagedObject]
            self.results = results

    public var onObjectsChanged: (([NSManagedObject]) -> ())?
    
    func handleObjectsChanged(notification: NSNotification) {
        guard let request = self.request else { return }
        
        let changedObjects = CDObserver.changedObjects(forNotification: notification, includeChanges: self.includeChanges)
        var changedEntities = Set<String>()
        
