     // MARK: Observer API
 
     /// Register an observer.
-    open func addObserver<T: AnyObject>(_ owner: T, _ handler: @escaping () -> Void) where T: Equatable {
+    open func observe<T: AnyObject>(owner: T, _ handler: @escaping () -> Void) where T: Equatable {
         if let existingObserverIndex = observers.index(where: { $0 == owner }) {
             observers[existingObserverIndex].handler = handler
         } else {

    }

    /// Remove given observers.
    open func removeObserver<T: AnyObject>(_ owner: T) where T: Equatable {
        if let existingObserverIndex = observers.index(where: { $0 == owner }) {
            observers.remove(at: existingObserverIndex)
        }
    }

    /// Remove all observers.
    open func removeObservers() {
        observers.removeAll(keepingCapacity: false)
    }


    /// Invokes each registered observer.
    open func notify() {
        flatten()
        guard isNotificationEnabled else { return }
        observers.forEach { $0.handler?() }
    }
}
