     
     public typealias FutureOperationBlockType = () throws -> (Future<T>)
 
-    public class func OperationWithBlock(block b: () throws -> Future<T>) -> FutureOperation<T> {
-        return FutureOperation<T>(block:b)
+    public class func OperationWithBlock(executor:Executor = .Primary, block b: () throws -> Future<T>) -> FutureOperation<T> {
+        return FutureOperation<T>(executor: executor,block:b)
     }
 
     public var future : Future<T> {
         return self.promise.future.mapAs()
     }
 
-    public init(block b: () throws -> Future<T>) {
+    public init(executor:Executor = .Primary, block b: () throws -> Future<T>) {
         super.init(block: { () throws -> AnyFuture in
             return try b()
         })

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

    private var getSubFuture: FutureAnyOperationBlockType

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