 
     guard setState(.Running) else { fatalError("Could not start task in \(__FUNCTION__)") }
     dispatch_async(queue) {
-      self.setValue(task())
+      self.value = task()
     }
   }
 

    return bind { (t: T) in other.map { (u: U) in (t,u) } }
  }

  public func combine<U,V>(o1: Deferred<U>, _ o2: Deferred<V>) -> Deferred<(T,U,V)>
  {
    return combine(o1).bind { (t: T, u: U) in o2.map { (v: V) in (t,u,v) } }
  }

  public func combine(other: [Deferred<T>]) -> Deferred<[T]>
  {
    let mappedSelf = map { (t: T) in [t] }

    if other.count == 0
    {
      return mappedSelf
    }

    let combined = other.reduce(mappedSelf) {
      (combiner: Deferred<[T]>, element: Deferred<T>) -> Deferred<[T]> in
      return element.bind {
        (t: T) in

        }
      }
    }
    return combined
  }
}
