added the C++ version
modified the c++ version to work with the test fixture
fixed the c++ version
tweak to the legal move function