     returns a new Future<T> that can be used to compose when this operation runs and completes
     
     */
-    public func add<T>(priority : FutureOperationQueuePriority = .Normal, block: FutureOperation<T>.FutureOperationBlockType) -> Future<T> {
+    public func add<T>(executor: Executor = .Primary,
+
+                    priority : FutureOperationQueuePriority = .Normal,
+                    block: FutureOperation<T>.FutureOperationBlockType) -> Future<T> {
         
         let operation = FutureOperation.OperationWithBlock(block: block)
         operation.futureOperationQueuePriority = priority

    private var getSubFuture: FutureAnyOperationBlockType

    
    public var futureAny = Future<Any>(success: ())
    
    var cancelToken : CancellationToken?

        return _is_finished
    }
    
    public init(executor:Executor = .Primary, block : () throws -> AnyFuture) {
        self.executor = executor
        self.getSubFuture = block
        self._is_executing = false
        self._is_finished = false
