add customized invoke