try to improve the way of defining macro