add BeginWithSnapShot