replacing ILambdaX with Func