 }
 
 public class ImmediateFuture<T>: Future<T> {
+  override public var isCompleted: Bool {
+    return result != nil
+  }
+
   override private var futureName: String {
     return "ImmediateFuture"
   }

public class PromiseFuture<T>: Future<T> {
  private let condition = Condition()
  private var completionCallbacks: [CompletionCallback] = []

  override private var futureName: String {
    return "PromiseFuture"


  static func dispatchAsync(group: Group, block: () -> Void) {
    dispatch_group_async(group, sharedQueue, block)
  }

  static func dispatchSync(block: () -> Void) {
    dispatch_sync(sharedQueue, block)
  }

  static func dispatchNotify(group: Group, block: () -> Void) {
