We now take snapshots!!!

Added a SnapshotFactory to encapsulate creating a snapshot.