 
     typealias EventListenerClosure = Swen<EventType>.EventListenerClosure
     weak var observer: AnyObject?
-    var observerPointer: UnsafeRawPointer
+    let observerPointer: UnsafeRawPointer
     let queue: OperationQueue
     let handler: EventListenerClosure
     let eventClassName: String

internal extension Swen {

    static func instance(in storage: SwenStorage) -> Swen<EventType> {
        _ = storage.instanceSemaphore.wait(timeout: DispatchTime.distantFuture)
        defer { storage.instanceSemaphore.signal() }

        for case let bus as Swen<EventType> in storage.buses {
            return bus

    }

    func postToAll(_ event: EventType) {
        editListenersMutex.wait()
        defer { editListenersMutex.signal() }
        listeners.forEach { $0.post(event, async: editListenersMutex.value <= 0) }
    }

    func unregister(_ observer: AnyObject) {
        editListenersMutex.wait()
        defer { editListenersMutex.signal() }
        let pointer = UnsafeRawPointer(Unmanaged.passUnretained(observer).toOpaque())
        listeners = listeners.filter { $0.observerPointer != pointer }
    }

}
