diff --git a/rootfs/apply.go b/rootfs/apply.go
index 8d08a2e..5824384 100644
--- a/rootfs/apply.go
+++ b/rootfs/apply.go
@@ -6,6 +6,7 @@ import (
 
 	"github.com/docker/containerd"
 	"github.com/docker/containerd/log"
+	"github.com/docker/containerd/snapshot"
 	"github.com/docker/docker/pkg/archive"
 	"github.com/opencontainers/go-digest"
 	"github.com/opencontainers/image-spec/identity"
@@ -13,13 +14,6 @@ import (
 	"github.com/pkg/errors"
 )
 
-type Snapshotter interface {
-	Prepare(key, parent string) ([]containerd.Mount, error)
-	Commit(name, key string) error
-	Rollback(key string) error
-	Exists(name string) bool
-}
-
 type Mounter interface {
 	Mount(mounts ...containerd.Mount) error
 	Unmount(mounts ...containerd.Mount) error
@@ -31,7 +25,7 @@ type Mounter interface {
 // The parent *must* be the chainID of the parent layer.
 //
 // The returned digest is the diffID for the applied layer.
-func ApplyLayer(snapshots Snapshotter, mounter Mounter, rd io.Reader, parent digest.Digest) (digest.Digest, error) {
+func ApplyLayer(snapshots snapshot.Snapshotter, mounter Mounter, rd io.Reader, parent digest.Digest) (digest.Digest, error) {
 	digester := digest.Canonical.Digester() // used to calculate diffID.
 	rd = io.TeeReader(rd, digester.Hash())
 
@@ -55,7 +49,7 @@ func ApplyLayer(snapshots Snapshotter, mounter Mounter, rd io.Reader, parent dig
 	}
 
 	if err := mounter.Mount(mounts...); err != nil {
-		if err := snapshots.Rollback(key); err != nil {
+		if err := snapshots.Remove(key); err != nil {
 			log.L.WithError(err).Error("snapshot rollback failed")
 		}
 		return "", err
@@ -82,7 +76,7 @@ func ApplyLayer(snapshots Snapshotter, mounter Mounter, rd io.Reader, parent dig
 //
 // If successful, the chainID for the top-level layer is returned. That
 // identifier can be used to check out a snapshot.
-func Prepare(snapshots Snapshotter, mounter Mounter, layers []ocispec.Descriptor,
+func Prepare(snapshots snapshot.Snapshotter, mounter Mounter, layers []ocispec.Descriptor,
 	// TODO(stevvooe): The following functions are candidate for internal
 	// object functions. We can use these to formulate the beginnings of a
 	// rootfs Controller.
@@ -109,7 +103,7 @@ func Prepare(snapshots Snapshotter, mounter Mounter, layers []ocispec.Descriptor
 			chainLocal := append(chain, diffID)
 			chainID := identity.ChainID(chainLocal)
 
-			if snapshots.Exists(chainID.String()) {
+			if _, err := snapshots.Stat(chainID.String()); err == nil {
 				continue
 			}
 		}