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

        let text = Signal<String>()

        text.next { string in
        println("Hello \(string)")
        }

        text.update(.Success(Box("World")))

*/
public final class Signal<T> {

    
    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))
            }
