snapshots refactors and test