implemented basic snapshot flow