macros and visibility