             return NopDisposable.instance
         }
     }
-    
-    func rx_onDisconnectRemoveValueWithCompletionBlock() -> Observable<FIRDatabaseReference> {
+    /**
+     Ensure the data t this location is removed when
+     the client is disconnected (due to closing the app, navigating
+     to a new page, or network issues
+     
+     rx_onDisconnectRemoveValue() is especially useful for implementing "presence systems.
+    */
+    func rx_onDisconnectRemoveValue() -> Observable<FIRDatabaseReference> {
         return Observable.create { observer in
             self.onDisconnectRemoveValueWithCompletionBlock({ (error, databaseReference) in
                 if let error = error {

            }
        }
    }
    
    func rx_observeWithSiblingKey(eventType: FIRDataEventType) -> Observable<(FIRDataSnapshot, String?)> {
        return Observable.create { observer in
            let handle = self.observeEventType(eventType, andPreviousSiblingKeyWithBlock: { (snapshot, siblingKey) in

            return NopDisposable.instance
        }
    }
    /**
     Performs an optimistic-concurrency transactional update to the data at this location. Your block will be called with a FIRMutableData
     instance that contains the current data at this location. Your block should update this data to the value you
     wish to write to this location, and then return an instance of FIRTransactionResult with the new data.
     
     If, when the operation reaches the server, it turns out that this client had stale data, your block will be run again with the latest data from the server.
     
     When your block is run, you may decide to aport the traansaction by return FIRTransactionResult.abort()
     
     @param block This block receives the current data at this location and must return an instance of FIRTransactionResult
    */
    func rx_runTransactionBlock(block: ((FIRMutableData!) -> FIRTransactionResult)!) -> Observable<(isCommitted: Bool, snapshot: FIRDataSnapshot?)> {
        return Observable.create { observer in
            self.runTransactionBlock(block, andCompletionBlock: { (error, isCommitted, snapshot) in
