implement platform macros