Use checkpoints instead of open-ended transactions