split out toplevel macros