draft
compile pass under VC
able to run on windows