add recursive snapshotting