MSVC compatible