snapshot -- close to functional