begin to add macro support