snapshot should be an API