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

    return v
  }

  public var value: T {
    if currentState != DeferredState.Completed.rawValue
    {
      dispatch_group_wait(group, DISPATCH_TIME_FOREVER)
    }
    return v
  }
}



// MARK: Notify: chain asynchronous tasks with input parameters and no return values.


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

  public func combine<U1,U2>(o1: Deferred<U1>, _ o2: Deferred<U2>) -> Deferred<(T,U1,U2)>
  {
    return combine(o1).bind { (t,u1) in o2.map { u2 in (t,u1,u2) } }
  }

  public func combine<U1,U2,U3>(o1: Deferred<U1>, _ o2: Deferred<U2>, _ o3: Deferred<U3>) -> Deferred<(T,U1,U2,U3)>
  {
    return combine(o1,o2).bind { (t,u1,u2) in o3.map { u3 in (t,u1,u2,u3) } }
  }

  public func combine<C: CollectionType where C.Generator.Element == Deferred<T>>(others: C) -> Deferred<[T]>
  {
    let mappedSelf = map { (t: T) in [t] }

    if others.count == 0
    {
      return mappedSelf
    }

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