Restore from effect instead of snapshot
Refactor snapshot generation