run simulation and provide results; refactor