This allows for more granular control and better parallelization in the future (generate once, simulate multiple, reconstructed multiple, etc).