         didSet {
             let newValue = _value
             observers.values.forEach { observer, dispatchQueue in
-                if let dispatchQueue = dispatchQueue {
-                    dispatchQueue.async {
-                        observer(newValue, oldValue)
-                    }
-                } else {
-                    observer(newValue, oldValue)
-                }
+                notify(observer: observer, dispatchQueue, oldValue: oldValue)
             }
         }
     }

    public func asImmutable() -> ImmutableObservable<T> {
        return self
    }
}

public class Observable<T>: ImmutableObservable<T> {

        let id = uniqueID.next()!
        
        observers[id] = (observer, queue)
        notify(observer: observer, queue, oldValue: nil)
        
        let disposable = Disposable { [weak self] in
            self?.observers[id] = nil
