reimplementing in cpp
Rewritten to cpp. Added Experimenter
update
update