Currently our simulation logic is baked into the software itself, but we might try to separate the simulation and API. This way we can confirm that our software works on any system so long as it conforms to our simulation. Additionally this would help remove some pesky logic from the APIs which have corner cases for the simulation.