using snapshot