function pointer typedef to work around some va_arg limitations