 
 public class Future<T> {
   private var _value: T?
-  var onCompleteHandlers: [(Result<T> -> ())] = []
+  var onCompleteHandlers: [(T -> ())] = []
 
   // The resultQueue is used to read the result. It begins suspended
   // and is resumed once a result exists.

    dispatch_async(mutateQueue) {
      precondition(self._value == nil, "Future cannot complete more than once")
      self._value = x
      for handler in self.onCompleteHandlers { handler(success(x)) }
      dispatch_group_leave(self.resultReadyGroup)
    }
  }

    return isCompleted
  }

  public func onComplete(f: T -> ()) {
    dispatch_async(mutateQueue) {
      self.onCompleteHandlers += [f]
    }
