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

  {
    let deferred = Deferred<U>()
    self.notify(queue) {
      (result: T) -> Void in
      deferred.setState(.Running)
      deferred.value = task(result)
    }
    return deferred
  }

    return v
  }

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

