snapshot generation