change the invoke method