refactor into experiment_runner like functions