don't use macros to generate the wrapper functions