recursively create snapshots