add macro support