raw version, may switch to boost
move to visual studio