     */
     public func ensure<U>(f: (Result<T>, (Result<U>->Void))->Void) -> Signal<U> {
         let signal = Signal<U>()
-        subscribe { value in
-            f(value) { signal.update($0) }
+        subscribe { result in
+            f(result) { signal.update($0) }
         }
         return signal
     }

    */
    public func bind<U>(f: (T, (Result<U>->Void))->Void) -> Signal<U> {
        let signal = Signal<U>()
        subscribe { value in
            value.bind(f)(signal.update)
        }
        return signal
    }

    
    public func filter(f: T -> Bool) -> Signal<T>{
        let signal = Signal<T>()
        subscribe { result in
            switch(result) {
            case let .Success(value):
                if f(value) {
                    signal.update(result)
                }
            case let .Error(error): signal.update(.Error(error))
            }
