add win32 implementation