add invokeBeforeExecute(), invokeAfterExecute()