clarify functions and macros