Compatible with MSVC