 /// Event bus
 public class EventBus: EventNotifyable, EventSubscribable {
 
-    struct WeakSubscriber : Equatable, Hashable {
+    struct WeakSubscriber : Hashable {
         weak var inner: AnyObject?
 
         init(_ inner: AnyObject) {

            var subscribers = self.subscribers[identifier] ?? []
            let weakSubscriber = WeakSubscriber(subscriber as AnyObject)
            subscribers.insert(weakSubscriber)
            self.subscribers[identifier] = subscribers
            self.cleanup(eventType)
        }
    }


                fatalError("Expected class, found struct/enum: \(subscriber)")
            }
            let identifier = ObjectIdentifier(eventType)
            var subscribers = self.subscribers[identifier] ?? []
            let weakSubscriber = WeakSubscriber(subscriber as AnyObject)
            let _ = subscribers.remove(weakSubscriber)
            self.subscribers[identifier] = Set(subscribers.filter { $0.inner is T })
        }
    }

    public func remove<T>(subscriber: T) {
        self.serialQueue.sync {
            guard type(of: subscriber) is AnyClass else {
                fatalError("Expected class, found struct/enum: \(subscriber)")
            }
            for (identifier, var subscribers) in self.subscribers {
                let weakSubscriber = WeakSubscriber(subscriber as AnyObject)
                let _ = subscribers.remove(weakSubscriber)
                self.subscribers[identifier] = Set(subscribers.filter { $0.inner is T })
            }
        }
    }

