You could also save the states at intervals of time, and allow custom checkpoints for the user.