modified for MSVC.
modified for MSVC.
modified for MSVC.