Preliminary exception handling for snapshot
Reorganize implementation