change invoke callback with apply