implemented snapshots