Added snapshot code

WIP
This method should not be bound to a Snapshot instance. It should be an staticmethod.