refactoring checkpoint