 extension Deferred {
     public func bindQueue<U>(queue: dispatch_queue_t, f: T -> Deferred<U>) -> Deferred<U> {
         let d = Deferred<U>()
-        self.uponQueue(queue) {
-            f($0).uponQueue(queue) {
+        upon(queue) {
+            f($0).upon(queue) {
                 d.fill($0)
             }
         }


    for deferred in array {
        dispatch_group_enter(group)
        deferred.uponQueue(DeferredDefaultQueue) { _ in
            dispatch_group_leave(group)
        }
    }

}

extension Deferred {
    public func bind<U>(f: T -> Deferred<U>) -> Deferred<U> {
        return bindQueue(defaultQueue, f: f)
    }
