      */
     public static func from(realm: Realm) -> Observable<(Realm, Realm.Notification)> {
 
-        return Observable<(Realm, Realm.Notification)>.create {observer in
+        return Observable<(Realm, Realm.Notification)>.create { observer in
             let token = realm.addNotificationBlock { (notification: Realm.Notification, realm: Realm) in
                 observer.onNext((realm, notification))
             }
 
             return Disposables.create {
-                observer.onCompleted()
                 token.stop()
             }
         }

     Returns an `Observable<PropertyChange>` that emits the object `PropertyChange`s.
     
     - parameter object: A Realm Object to observe
     
     - returns: `Observable<PropertyChange>` will emit any time a change is detected on the object
     */
    
    public static func propertyChanges(object: Element) -> Observable<PropertyChange> {
        return Observable<PropertyChange>.create {observer in
            let token = object.addNotificationBlock {change in
                switch change {
                case .change(let changes):
                    for change in changes {


    /**
     Returns bindable sink, which deletes objects in sequence from Realm.

     - parameter: onError - closure to implement custom error handling
     - returns: `AnyObserver<S>`, which you can use to subscribe an `Observable` to
     */
    public static func delete<S: Sequence>(onError: ((S?, Error)->Void)? = nil)
        -> AnyObserver<S>  where S.Iterator.Element: Object {

        return AnyObserver { event in

            guard let elements = event.element,
                var generator = elements.makeIterator() as S.Iterator?,
