msvc compatibility