implemented FunctionTask