migrate to MSVC