Checkpointing
Tested all use cases individually