Checkpoint refactoring while trying to create a full solver.
Got full solver working. Not well tested, but is sanity checked. And at least it doesn't break anything