avoid exposing internal macros