1. Having three copies of the same function that are slightly different is annoying to maintain. 2. In the current structure parameters that are not needed have to be passed. E.g. multi-rank sub workers, do not need the checkpoint file handle. 3. How do we measure evaluation times properly across restarting from a checkpoint?