Checkpoint refactoring while trying to create a full solver.