added Snapshot mechanism