   {
     self.init()
 
-    guard setState(.Working) else { fatalError("Could not start task in \(__FUNCTION__)") }
+    guard setState(.Executing) else { fatalError("Could not start task in \(__FUNCTION__)") }
     dispatch_async(queue) {
       try! self.setValue(task())
     }


  public func determine(value: T) throws
  {
    super.setState(.Working)
    try super.setValue(value)
  }

  public func beginWork()
  {
    super.setState(.Working)
  }
}

    case .Waiting:
      return currentState == DeferredState.Waiting.rawValue

    case .Executing:
      return OSAtomicCompareAndSwap32Barrier(DeferredState.Waiting.rawValue, DeferredState.Executing.rawValue, &currentState)

    case .Assigning:
      return OSAtomicCompareAndSwap32Barrier(DeferredState.Executing.rawValue, DeferredState.Assigning.rawValue, &currentState)

    case .Determined:
      if OSAtomicCompareAndSwap32Barrier(DeferredState.Assigning.rawValue, DeferredState.Determined.rawValue, &currentState)
