Merge "Separate interface definition and implementation of Snapshot"