the helper printing functions should be made real functions, not macros. It's more safe and they are not required to be super-fast