     // 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 {


    // MARK: Notify API

    /// A boolean property to suppress notifications and This flag value is checked
    /// before firing any notification calls to the registered observers.
    /// The default value is `false`, meaning all notifications will be fired.
    open var suppressNotifications: Bool = false

    /// Invokes each registered observer if `oldValue` is different than `newValue`.
    open func notifyIfNeeded<T: Equatable>(_ oldValue: T, newValue: T) {

    }

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

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

