Refactor SnapshotTaker into Snapshot for improved readability and OO