add macro interface