added revised version of Snapshot & related classes

revised version written prior to maintaining version control. also it
seems a quirk is causing files to fluctuate between lower and uppers case
for some object properties, causing git to recognize changes where none
exist.