add some way to invoke macro