define checkpoints and load checkpoints
add update abstraction and clean a bit