hide private helper behind same macro as the code that uses it