Seems to work on msvc