snapshot
refactoring