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

                
            else
            {
                completion(nil)
                
                return
            }
            
            if let _:NSNull = json as? NSNull
            {
                completion(nil)
                
                return
            }
            
            guard
                
                let model:ModelType = ModelType(snapshot:json)
                
            else
            {
                completion(nil)
                
                return
            }
            
            completion(model)
        }
        
        return handler

                
            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
                
