add "invoke" method