     /// - parameter callback: The closure to invoke whenever the signal fires.
     #if swift(>=3.0)
     @discardableResult
-    public func listenPastOnce(on listener: AnyObject, callback: SignalCallback) -> SignalListener<T> {
+    public func listenPastOnce(on listener: AnyObject, callback: @escaping SignalCallback) -> SignalListener<T> {
         let signalListener = self.listen(on: listener, callback: callback)
         if let lastDataFired = lastDataFired {
             signalListener.callback(lastDataFired)

    /// - parameter callback: The closure to invoke whenever the signal fires.
    #if swift(>=3.0)
    @discardableResult
    public func listenPast(on listener: AnyObject, callback: SignalCallback) -> SignalListener<T> {
        let signalListener = self.listen(on: listener, callback: callback)
        if let lastDataFired = lastDataFired {
            signalListener.callback(lastDataFired)

    /// - parameter callback: The closure to invoke whenever the signal fires.
    #if swift(>=3.0)
    @discardableResult
    public func listen(on listener: AnyObject, callback: @escaping SignalCallback) -> SignalListener<T> {
        dumpCancelledListeners()
        let signalListener = SignalListener<T>(listener: listener, callback: callback);
        signalListeners.append(signalListener)
        return signalListener
    }
    #else
    public func listen(on listener: AnyObject, callback: SignalCallback) -> SignalListener<T> {
        dumpCancelledListeners()
        let signalListener = SignalListener<T>(listener: listener, callback: callback);
        signalListeners.append(signalListener)
        return signalListener
    }
    #endif
    
    
