split snapshot and change files
added tests for functions of classes
added nested transaction code to snapshotable