                 Static.instance.cache[id] = [namedObserver]
             }
         }
-        
+
         return observer
     }
-    
+
     @discardableResult
-    open class func onMainThread(_ target: AnyObject, name: String, handler: @escaping ((Notification!) -> Void)) -> NSObjectProtocol {
-        return SwiftEventBus.on(target, name: name, sender: nil, queue: OperationQueue.main, handler: handler)
-    }
-    
-    @discardableResult
-    open class func onMainThread(_ target: AnyObject, name: String, sender: AnyObject?, handler: @escaping ((Notification!) -> Void)) -> NSObjectProtocol {
+    open class func onMainThread(_ target: AnyObject, name: String, sender: Any? = nil, handler: @escaping ((Notification!) -> Void)) -> NSObjectProtocol {
         return SwiftEventBus.on(target, name: name, sender: sender, queue: OperationQueue.main, handler: handler)
     }
-    
+
     @discardableResult
-    open class func onBackgroundThread(_ target: AnyObject, name: String, handler: @escaping ((Notification!) -> Void)) -> NSObjectProtocol {
-        return SwiftEventBus.on(target, name: name, sender: nil, queue: OperationQueue(), handler: handler)
-    }
-    
-    @discardableResult
-    open class func onBackgroundThread(_ target: AnyObject, name: String, sender: AnyObject?, handler: @escaping ((Notification!) -> Void)) -> NSObjectProtocol {
+    open class func onBackgroundThread(_ target: AnyObject, name: String, sender: Any? = nil, handler: @escaping ((Notification!) -> Void)) -> NSObjectProtocol {
         return SwiftEventBus.on(target, name: name, sender: sender, queue: OperationQueue(), handler: handler)
     }
-    
+
     ////////////////////////////////////
     // Unregister
     ////////////////////////////////////
-    
+
     open class func unregister(_ target: AnyObject) {
         let id = UInt(bitPattern: ObjectIdentifier(target))
         let center = NotificationCenter.default
-        
+
         Static.queue.sync {
             if let namedObservers = Static.instance.cache.removeValue(forKey: id) {
                 for namedObserver in namedObservers {

            }
        }
    }
    
}

            }
        }
    }

    open class func unregister(_ target: AnyObject, name: String) {
        let id = UInt(bitPattern: ObjectIdentifier(target))
        let center = NotificationCenter.default

        Static.queue.sync {
            if let namedObservers = Static.instance.cache[id] {
                Static.instance.cache[id] = namedObservers.filter({ (namedObserver: NamedObserver) -> Bool in
