snapshot factory