Implement Snapshot method
Merge branch 'use-interface'

Conflicts:
	snapshot.go