don't use variadic macros anymore because support in vc++ is broken