future implmentation will be in c++, which exposes methods to manipulate/run the simulation to python via cython