                 
             else
             {
-                completion(nil)
+                completion(node)
                 
                 return
             }
             
             if let _:NSNull = json as? NSNull
             {
-                completion(nil)
-                
-                return
+            }
+            else
+            {
+                node = nodeType.init(snapshot:json)
             }
             
-            guard
-                
-                let model:ModelType = ModelType(snapshot:json)
-                
-            else
-            {
-                completion(nil)
-                
-                return
-            }
-            
-            completion(model)
+            completion(node)
         }
         
         return handler

        childReference.removeValue()
    }
    
    func listenOnce<ModelType:FDatabaseModel>(path:String, modelType:ModelType.Type, completion:@escaping((ModelType?) -> ()))
    {
        let pathReference:FIRDatabaseReference = reference.child(path)
        pathReference.observeSingleEvent(of:FIRDataEventType.value)
        { (snapshot:FIRDataSnapshot) in
            
            guard
                

                
            else
            {
                completion(node)
                
                return
            }
            
            if let _:NSNull = json as? NSNull
            {
            }
            else
            {
                node = nodeType.init(snapshot:json)
            }
            
            completion(node)
        }
    }

    func listen(
        eventType:FIRDataEventType,
        path:String,
        nodeType:FDatabaseNodeProtocol.Type,
        completion:@escaping((FDatabaseNodeProtocol?) -> ())) -> UInt
    {
        let pathReference:FIRDatabaseReference = reference.child(path)
        let handler:UInt = pathReference.observe(eventType)
        { (snapshot:FIRDataSnapshot) in
            
            var node:FDatabaseNodeProtocol?
            
            guard
                
