diff --git a/cmd/podman/build.go b/cmd/podman/build.go
index be85f4373b..e40e35cb56 100644
--- a/cmd/podman/build.go
+++ b/cmd/podman/build.go
@@ -9,7 +9,7 @@ import (
 	"github.com/containers/buildah/imagebuildah"
 	buildahcli "github.com/containers/buildah/pkg/cli"
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/docker/go-units"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
diff --git a/cmd/podman/commands.go b/cmd/podman/commands.go
index d8fc44c2f7..310ec8378c 100644
--- a/cmd/podman/commands.go
+++ b/cmd/podman/commands.go
@@ -94,13 +94,10 @@ func getContainerSubCommands() []*cobra.Command {
 func getPodSubCommands() []*cobra.Command {
 	return []*cobra.Command{
 		_podCreateCommand,
-		_podKillCommand,
 		_podPauseCommand,
 		_podPsCommand,
 		_podRestartCommand,
-		_podStartCommand,
 		_podStatsCommand,
-		_podStopCommand,
 		_podTopCommand,
 		_podUnpauseCommand,
 	}
diff --git a/cmd/podman/containers_prune.go b/cmd/podman/containers_prune.go
index bae578e1d2..6e49604293 100644
--- a/cmd/podman/containers_prune.go
+++ b/cmd/podman/containers_prune.go
@@ -6,7 +6,7 @@ import (
 	"github.com/containers/libpod/cmd/podman/cliconfig"
 	"github.com/containers/libpod/cmd/podman/shared"
 	"github.com/containers/libpod/libpod"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
diff --git a/cmd/podman/exists.go b/cmd/podman/exists.go
index aad203818f..74a4c841bb 100644
--- a/cmd/podman/exists.go
+++ b/cmd/podman/exists.go
@@ -6,8 +6,8 @@ import (
 	"os"
 
 	"github.com/containers/libpod/libpod"
-	"github.com/containers/libpod/libpod/adapter"
 	"github.com/containers/libpod/libpod/image"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 )
 
diff --git a/cmd/podman/export.go b/cmd/podman/export.go
index a593a47534..5873bad3d8 100644
--- a/cmd/podman/export.go
+++ b/cmd/podman/export.go
@@ -4,7 +4,7 @@ import (
 	"os"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/containers/libpod/pkg/rootless"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
diff --git a/cmd/podman/history.go b/cmd/podman/history.go
index 6791257d97..103ef08e89 100644
--- a/cmd/podman/history.go
+++ b/cmd/podman/history.go
@@ -8,8 +8,8 @@ import (
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
 	"github.com/containers/libpod/cmd/podman/formats"
-	"github.com/containers/libpod/libpod/adapter"
 	"github.com/containers/libpod/libpod/image"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/docker/go-units"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
diff --git a/cmd/podman/imagefilters/filters.go b/cmd/podman/imagefilters/filters.go
index 3665102022..d01eb74363 100644
--- a/cmd/podman/imagefilters/filters.go
+++ b/cmd/podman/imagefilters/filters.go
@@ -5,7 +5,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/containers/libpod/pkg/inspect"
 )
 
diff --git a/cmd/podman/images.go b/cmd/podman/images.go
index 56810eaebc..6e82195a93 100644
--- a/cmd/podman/images.go
+++ b/cmd/podman/images.go
@@ -11,8 +11,8 @@ import (
 	"github.com/containers/libpod/cmd/podman/cliconfig"
 	"github.com/containers/libpod/cmd/podman/formats"
 	"github.com/containers/libpod/cmd/podman/imagefilters"
-	"github.com/containers/libpod/libpod/adapter"
 	"github.com/containers/libpod/libpod/image"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/docker/go-units"
 	"github.com/opencontainers/go-digest"
 	"github.com/pkg/errors"
diff --git a/cmd/podman/images_prune.go b/cmd/podman/images_prune.go
index cc0dcb99ac..79dcd097c8 100644
--- a/cmd/podman/images_prune.go
+++ b/cmd/podman/images_prune.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/cmd/podman/import.go b/cmd/podman/import.go
index 053408ff38..a64b03d6d0 100644
--- a/cmd/podman/import.go
+++ b/cmd/podman/import.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/cmd/podman/info.go b/cmd/podman/info.go
index 06dbbd7485..a1473dac9c 100644
--- a/cmd/podman/info.go
+++ b/cmd/podman/info.go
@@ -7,7 +7,7 @@ import (
 	"github.com/containers/libpod/cmd/podman/cliconfig"
 	"github.com/containers/libpod/cmd/podman/formats"
 	"github.com/containers/libpod/libpod"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/containers/libpod/version"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
diff --git a/cmd/podman/inspect.go b/cmd/podman/inspect.go
index 48b953207a..46883b31d9 100644
--- a/cmd/podman/inspect.go
+++ b/cmd/podman/inspect.go
@@ -8,7 +8,7 @@ import (
 	"github.com/containers/libpod/cmd/podman/cliconfig"
 	"github.com/containers/libpod/cmd/podman/formats"
 	"github.com/containers/libpod/cmd/podman/shared"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	cc "github.com/containers/libpod/pkg/spec"
 	"github.com/containers/libpod/pkg/util"
 	"github.com/pkg/errors"
diff --git a/cmd/podman/load.go b/cmd/podman/load.go
index 514c9f1e90..272cd78d29 100644
--- a/cmd/podman/load.go
+++ b/cmd/podman/load.go
@@ -7,7 +7,7 @@ import (
 	"os"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/cmd/podman/pod.go b/cmd/podman/pod.go
index d65e0b384d..4c7c416cee 100644
--- a/cmd/podman/pod.go
+++ b/cmd/podman/pod.go
@@ -22,7 +22,10 @@ var podCommand = cliconfig.PodmanCommand{
 var podSubCommands = []*cobra.Command{
 	_podExistsCommand,
 	_podInspectCommand,
+	_podKillCommand,
 	_podRmCommand,
+	_podStartCommand,
+	_podStopCommand,
 }
 
 func init() {
diff --git a/cmd/podman/pod_inspect.go b/cmd/podman/pod_inspect.go
index 1f4d1a3dd6..5a32b5c5d1 100644
--- a/cmd/podman/pod_inspect.go
+++ b/cmd/podman/pod_inspect.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/cmd/podman/pod_kill.go b/cmd/podman/pod_kill.go
index d0318b4098..aaaae0f7dc 100644
--- a/cmd/podman/pod_kill.go
+++ b/cmd/podman/pod_kill.go
@@ -5,7 +5,7 @@ import (
 	"syscall"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/cmd/podman/libpodruntime"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/docker/docker/pkg/signal"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
@@ -45,7 +45,7 @@ func init() {
 
 // podKillCmd kills one or more pods with a signal
 func podKillCmd(c *cliconfig.PodKillValues) error {
-	runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand)
+	runtime, err := adapter.GetRuntime(&c.PodmanCommand)
 	if err != nil {
 		return errors.Wrapf(err, "could not get runtime")
 	}
@@ -63,30 +63,20 @@ func podKillCmd(c *cliconfig.PodKillValues) error {
 		killSignal = uint(sysSignal)
 	}
 
-	// getPodsFromContext returns an error when a requested pod
-	// isn't found. The only fatal error scenerio is when there are no pods
-	// in which case the following loop will be skipped.
-	pods, lastError := getPodsFromContext(&c.PodmanCommand, runtime)
+	podKillIds, podKillErrors := runtime.KillPods(getContext(), c, killSignal)
+	for _, p := range podKillIds {
+		fmt.Println(p)
+	}
+	if len(podKillErrors) == 0 {
+		return nil
+	}
+	// Grab the last error
+	lastError := podKillErrors[len(podKillErrors)-1]
+	// Remove the last error from the error slice
+	podKillErrors = podKillErrors[:len(podKillErrors)-1]
 
-	for _, pod := range pods {
-		ctr_errs, err := pod.Kill(killSignal)
-		if ctr_errs != nil {
-			for ctr, err := range ctr_errs {
-				if lastError != nil {
-					logrus.Errorf("%q", lastError)
-				}
-				lastError = errors.Wrapf(err, "unable to kill container %q in pod %q", ctr, pod.ID())
-			}
-			continue
-		}
-		if err != nil {
-			if lastError != nil {
-				logrus.Errorf("%q", lastError)
-			}
-			lastError = errors.Wrapf(err, "unable to kill pod %q", pod.ID())
-			continue
-		}
-		fmt.Println(pod.ID())
+	for _, err := range podKillErrors {
+		logrus.Errorf("%q", err)
 	}
 	return lastError
 }
diff --git a/cmd/podman/pod_rm.go b/cmd/podman/pod_rm.go
index b552b9f42d..ba16d03c7d 100644
--- a/cmd/podman/pod_rm.go
+++ b/cmd/podman/pod_rm.go
@@ -2,9 +2,9 @@ package main
 
 import (
 	"fmt"
-	"github.com/containers/libpod/libpod/adapter"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
diff --git a/cmd/podman/pod_start.go b/cmd/podman/pod_start.go
index 3bba5c2e93..5761afd520 100644
--- a/cmd/podman/pod_start.go
+++ b/cmd/podman/pod_start.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/cmd/podman/libpodruntime"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
@@ -45,38 +45,26 @@ func init() {
 }
 
 func podStartCmd(c *cliconfig.PodStartValues) error {
-	runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand)
+	runtime, err := adapter.GetRuntime(&c.PodmanCommand)
 	if err != nil {
 		return errors.Wrapf(err, "could not get runtime")
 	}
 	defer runtime.Shutdown(false)
 
-	// getPodsFromContext returns an error when a requested pod
-	// isn't found. The only fatal error scenerio is when there are no pods
-	// in which case the following loop will be skipped.
-	pods, lastError := getPodsFromContext(&c.PodmanCommand, runtime)
-
-	ctx := getContext()
-	for _, pod := range pods {
-		ctr_errs, err := pod.Start(ctx)
-		if ctr_errs != nil {
-			for ctr, err := range ctr_errs {
-				if lastError != nil {
-					logrus.Errorf("%q", lastError)
-				}
-				lastError = errors.Wrapf(err, "unable to start container %q on pod %q", ctr, pod.ID())
-			}
-			continue
-		}
-		if err != nil {
-			if lastError != nil {
-				logrus.Errorf("%q", lastError)
-			}
-			lastError = errors.Wrapf(err, "unable to start pod %q", pod.ID())
-			continue
-		}
-		fmt.Println(pod.ID())
+	podStartIDs, podStartErrors := runtime.StartPods(getContext(), c)
+	for _, p := range podStartIDs {
+		fmt.Println(p)
 	}
+	if len(podStartErrors) == 0 {
+		return nil
+	}
+	// Grab the last error
+	lastError := podStartErrors[len(podStartErrors)-1]
+	// Remove the last error from the error slice
+	podStartErrors = podStartErrors[:len(podStartErrors)-1]
 
+	for _, err := range podStartErrors {
+		logrus.Errorf("%q", err)
+	}
 	return lastError
 }
diff --git a/cmd/podman/pod_stop.go b/cmd/podman/pod_stop.go
index 52c92b521e..62d0d4aa58 100644
--- a/cmd/podman/pod_stop.go
+++ b/cmd/podman/pod_stop.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/cmd/podman/libpodruntime"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
@@ -47,43 +47,26 @@ func init() {
 }
 
 func podStopCmd(c *cliconfig.PodStopValues) error {
-	timeout := -1
-	runtime, err := libpodruntime.GetRuntime(&c.PodmanCommand)
+	runtime, err := adapter.GetRuntime(&c.PodmanCommand)
 	if err != nil {
 		return errors.Wrapf(err, "could not get runtime")
 	}
 	defer runtime.Shutdown(false)
 
-	// getPodsFromContext returns an error when a requested pod
-	// isn't found. The only fatal error scenerio is when there are no pods
-	// in which case the following loop will be skipped.
-	pods, lastError := getPodsFromContext(&c.PodmanCommand, runtime)
-
-	ctx := getContext()
-
-	if c.Flag("timeout").Changed {
-		timeout = int(c.Timeout)
+	podStopIds, podStopErrors := runtime.StopPods(getContext(), c)
+	for _, p := range podStopIds {
+		fmt.Println(p)
 	}
-	for _, pod := range pods {
-		// set cleanup to true to clean mounts and namespaces
-		ctr_errs, err := pod.StopWithTimeout(ctx, true, timeout)
-		if ctr_errs != nil {
-			for ctr, err := range ctr_errs {
-				if lastError != nil {
-					logrus.Errorf("%q", lastError)
-				}
-				lastError = errors.Wrapf(err, "unable to stop container %q on pod %q", ctr, pod.ID())
-			}
-			continue
-		}
-		if err != nil {
-			if lastError != nil {
-				logrus.Errorf("%q", lastError)
-			}
-			lastError = errors.Wrapf(err, "unable to stop pod %q", pod.ID())
-			continue
-		}
-		fmt.Println(pod.ID())
+	if len(podStopErrors) == 0 {
+		return nil
+	}
+	// Grab the last error
+	lastError := podStopErrors[len(podStopErrors)-1]
+	// Remove the last error from the error slice
+	podStopErrors = podStopErrors[:len(podStopErrors)-1]
+
+	for _, err := range podStopErrors {
+		logrus.Errorf("%q", err)
 	}
 	return lastError
 }
diff --git a/cmd/podman/pull.go b/cmd/podman/pull.go
index 476bccb0e7..71f5551622 100644
--- a/cmd/podman/pull.go
+++ b/cmd/podman/pull.go
@@ -11,9 +11,9 @@ import (
 	"github.com/containers/image/transports/alltransports"
 	"github.com/containers/image/types"
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
 	"github.com/containers/libpod/libpod/common"
 	image2 "github.com/containers/libpod/libpod/image"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/containers/libpod/pkg/util"
 	opentracing "github.com/opentracing/opentracing-go"
 	"github.com/pkg/errors"
diff --git a/cmd/podman/push.go b/cmd/podman/push.go
index 881d8cebc3..56261a8d33 100644
--- a/cmd/podman/push.go
+++ b/cmd/podman/push.go
@@ -10,8 +10,8 @@ import (
 	"github.com/containers/image/manifest"
 	"github.com/containers/image/types"
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
 	"github.com/containers/libpod/libpod/image"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/containers/libpod/pkg/util"
 	imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
 	"github.com/pkg/errors"
diff --git a/cmd/podman/rmi.go b/cmd/podman/rmi.go
index fb27772f55..fbaa19336a 100644
--- a/cmd/podman/rmi.go
+++ b/cmd/podman/rmi.go
@@ -5,7 +5,7 @@ import (
 	"os"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/containers/storage"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
diff --git a/cmd/podman/save.go b/cmd/podman/save.go
index ab421add65..161540debc 100644
--- a/cmd/podman/save.go
+++ b/cmd/podman/save.go
@@ -1,14 +1,15 @@
 package main
 
 import (
+	"os"
+	"strings"
+
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/containers/libpod/pkg/util"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
-	"os"
-	"strings"
 )
 
 const (
diff --git a/cmd/podman/system_prune.go b/cmd/podman/system_prune.go
index a91d7bf0ae..a823dcad1c 100644
--- a/cmd/podman/system_prune.go
+++ b/cmd/podman/system_prune.go
@@ -8,7 +8,7 @@ import (
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
 	"github.com/containers/libpod/cmd/podman/shared"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
diff --git a/cmd/podman/tag.go b/cmd/podman/tag.go
index 422e9dbf61..2b9d67066d 100644
--- a/cmd/podman/tag.go
+++ b/cmd/podman/tag.go
@@ -2,7 +2,7 @@ package main
 
 import (
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/cmd/podman/volume_create.go b/cmd/podman/volume_create.go
index 6c8a78922c..833191082e 100644
--- a/cmd/podman/volume_create.go
+++ b/cmd/podman/volume_create.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/cmd/podman/volume_inspect.go b/cmd/podman/volume_inspect.go
index 3b4ba51d56..dc6afbc369 100644
--- a/cmd/podman/volume_inspect.go
+++ b/cmd/podman/volume_inspect.go
@@ -2,7 +2,7 @@ package main
 
 import (
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/cmd/podman/volume_ls.go b/cmd/podman/volume_ls.go
index 0edadc5acf..5adfc1e91f 100644
--- a/cmd/podman/volume_ls.go
+++ b/cmd/podman/volume_ls.go
@@ -6,7 +6,7 @@ import (
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
 	"github.com/containers/libpod/cmd/podman/formats"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/cmd/podman/volume_prune.go b/cmd/podman/volume_prune.go
index a2205140fb..1f7931aa43 100644
--- a/cmd/podman/volume_prune.go
+++ b/cmd/podman/volume_prune.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
diff --git a/cmd/podman/volume_rm.go b/cmd/podman/volume_rm.go
index 14847a9495..03b6ccae12 100644
--- a/cmd/podman/volume_rm.go
+++ b/cmd/podman/volume_rm.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 
 	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod/adapter"
+	"github.com/containers/libpod/pkg/adapter"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 )
diff --git a/libpod/adapter/pods.go b/libpod/adapter/pods.go
deleted file mode 100644
index 9841c20c0b..0000000000
--- a/libpod/adapter/pods.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// +build !remoteclient
-
-package adapter
-
-import (
-	"context"
-	"github.com/containers/libpod/libpod/adapter/shortcuts"
-
-	"github.com/containers/libpod/cmd/podman/cliconfig"
-	"github.com/containers/libpod/libpod"
-)
-
-// Pod ...
-type Pod struct {
-	*libpod.Pod
-}
-
-// RemovePods ...
-func (r *LocalRuntime) RemovePods(ctx context.Context, cli *cliconfig.PodRmValues) ([]string, []error) {
-	var (
-		errs   []error
-		podids []string
-	)
-	pods, err := shortcuts.GetPodsByContext(cli.All, cli.Latest, cli.InputArgs, r.Runtime)
-	if err != nil {
-		errs = append(errs, err)
-		return nil, errs
-	}
-
-	for _, p := range pods {
-		if err := r.RemovePod(ctx, p, cli.Force, cli.Force); err != nil {
-			errs = append(errs, err)
-		} else {
-			podids = append(podids, p.ID())
-		}
-	}
-	return podids, errs
-}
-
-// GetLatestPod gets the latest pod and wraps it in an adapter pod
-func (r *LocalRuntime) GetLatestPod() (*Pod, error) {
-	pod := Pod{}
-	p, err := r.Runtime.GetLatestPod()
-	pod.Pod = p
-	return &pod, err
-}
-
-// LookupPod gets a pod by name or id and wraps it in an adapter pod
-func (r *LocalRuntime) LookupPod(nameOrID string) (*Pod, error) {
-	pod := Pod{}
-	p, err := r.Runtime.LookupPod(nameOrID)
-	pod.Pod = p
-	return &pod, err
-}
diff --git a/libpod/adapter/client.go b/pkg/adapter/client.go
similarity index 100%
rename from libpod/adapter/client.go
rename to pkg/adapter/client.go
diff --git a/libpod/adapter/containers_remote.go b/pkg/adapter/containers_remote.go
similarity index 100%
rename from libpod/adapter/containers_remote.go
rename to pkg/adapter/containers_remote.go
diff --git a/libpod/adapter/images_remote.go b/pkg/adapter/images_remote.go
similarity index 100%
rename from libpod/adapter/images_remote.go
rename to pkg/adapter/images_remote.go
diff --git a/libpod/adapter/info_remote.go b/pkg/adapter/info_remote.go
similarity index 100%
rename from libpod/adapter/info_remote.go
rename to pkg/adapter/info_remote.go
diff --git a/pkg/adapter/pods.go b/pkg/adapter/pods.go
new file mode 100644
index 0000000000..f2bcbd4737
--- /dev/null
+++ b/pkg/adapter/pods.go
@@ -0,0 +1,152 @@
+// +build !remoteclient
+
+package adapter
+
+import (
+	"context"
+	"github.com/containers/libpod/pkg/adapter/shortcuts"
+
+	"github.com/containers/libpod/cmd/podman/cliconfig"
+	"github.com/containers/libpod/libpod"
+)
+
+// Pod ...
+type Pod struct {
+	*libpod.Pod
+}
+
+// RemovePods ...
+func (r *LocalRuntime) RemovePods(ctx context.Context, cli *cliconfig.PodRmValues) ([]string, []error) {
+	var (
+		errs   []error
+		podids []string
+	)
+	pods, err := shortcuts.GetPodsByContext(cli.All, cli.Latest, cli.InputArgs, r.Runtime)
+	if err != nil {
+		errs = append(errs, err)
+		return nil, errs
+	}
+
+	for _, p := range pods {
+		if err := r.RemovePod(ctx, p, cli.Force, cli.Force); err != nil {
+			errs = append(errs, err)
+		} else {
+			podids = append(podids, p.ID())
+		}
+	}
+	return podids, errs
+}
+
+// GetLatestPod gets the latest pod and wraps it in an adapter pod
+func (r *LocalRuntime) GetLatestPod() (*Pod, error) {
+	pod := Pod{}
+	p, err := r.Runtime.GetLatestPod()
+	pod.Pod = p
+	return &pod, err
+}
+
+// LookupPod gets a pod by name or id and wraps it in an adapter pod
+func (r *LocalRuntime) LookupPod(nameOrID string) (*Pod, error) {
+	pod := Pod{}
+	p, err := r.Runtime.LookupPod(nameOrID)
+	pod.Pod = p
+	return &pod, err
+}
+
+// StopPods is a wrapper to libpod to stop pods based on a cli context
+func (r *LocalRuntime) StopPods(ctx context.Context, cli *cliconfig.PodStopValues) ([]string, []error) {
+	timeout := -1
+	if cli.Flags().Changed("timeout") {
+		timeout = int(cli.Timeout)
+	}
+	var (
+		errs   []error
+		podids []string
+	)
+	pods, err := shortcuts.GetPodsByContext(cli.All, cli.Latest, cli.InputArgs, r.Runtime)
+	if err != nil {
+		errs = append(errs, err)
+		return nil, errs
+	}
+
+	for _, p := range pods {
+		stopped := true
+		conErrs, stopErr := p.StopWithTimeout(ctx, true, int(timeout))
+		if stopErr != nil {
+			errs = append(errs, stopErr)
+			stopped = false
+		}
+		if conErrs != nil {
+			stopped = false
+			for _, err := range conErrs {
+				errs = append(errs, err)
+			}
+		}
+		if stopped {
+			podids = append(podids, p.ID())
+		}
+	}
+	return podids, errs
+}
+
+// KillPods is a wrapper to libpod to start pods based on the cli context
+func (r *LocalRuntime) KillPods(ctx context.Context, cli *cliconfig.PodKillValues, signal uint) ([]string, []error) {
+	var (
+		errs   []error
+		podids []string
+	)
+	pods, err := shortcuts.GetPodsByContext(cli.All, cli.Latest, cli.InputArgs, r.Runtime)
+	if err != nil {
+		errs = append(errs, err)
+		return nil, errs
+	}
+	for _, p := range pods {
+		killed := true
+		conErrs, killErr := p.Kill(signal)
+		if killErr != nil {
+			errs = append(errs, killErr)
+			killed = false
+		}
+		if conErrs != nil {
+			killed = false
+			for _, err := range conErrs {
+				errs = append(errs, err)
+			}
+		}
+		if killed {
+			podids = append(podids, p.ID())
+		}
+	}
+	return podids, errs
+}
+
+// StartPods is a wrapper to start pods based on the cli context
+func (r *LocalRuntime) StartPods(ctx context.Context, cli *cliconfig.PodStartValues) ([]string, []error) {
+	var (
+		errs   []error
+		podids []string
+	)
+	pods, err := shortcuts.GetPodsByContext(cli.All, cli.Latest, cli.InputArgs, r.Runtime)
+	if err != nil {
+		errs = append(errs, err)
+		return nil, errs
+	}
+	for _, p := range pods {
+		started := true
+		conErrs, startErr := p.Start(ctx)
+		if startErr != nil {
+			errs = append(errs, startErr)
+			started = false
+		}
+		if conErrs != nil {
+			started = false
+			for _, err := range conErrs {
+				errs = append(errs, err)
+			}
+		}
+		if started {
+			podids = append(podids, p.ID())
+		}
+	}
+	return podids, errs
+}
diff --git a/libpod/adapter/pods_remote.go b/pkg/adapter/pods_remote.go
similarity index 56%
rename from libpod/adapter/pods_remote.go
rename to pkg/adapter/pods_remote.go
index 57c78821f3..04484780aa 100644
--- a/libpod/adapter/pods_remote.go
+++ b/pkg/adapter/pods_remote.go
@@ -96,3 +96,75 @@ func (p *Pod) Inspect() (*libpod.PodInspect, error) {
 	}
 	return &inspectData, nil
 }
+
+// StopPods stops pods based on the cli context from the remote client.
+func (r *LocalRuntime) StopPods(ctx context.Context, cli *cliconfig.PodStopValues) ([]string, []error) {
+	var (
+		stopErrs []error
+		stopPods []string
+	)
+	var timeout int64 = -1
+	if cli.Flags().Changed("timeout") {
+		timeout = int64(cli.Timeout)
+	}
+	podIDs, err := iopodman.GetPodsByContext().Call(r.Conn, cli.All, cli.Latest, cli.InputArgs)
+	if err != nil {
+		return nil, []error{err}
+	}
+
+	for _, p := range podIDs {
+		podID, err := iopodman.StopPod().Call(r.Conn, p, timeout)
+		if err != nil {
+			stopErrs = append(stopErrs, err)
+		} else {
+			stopPods = append(stopPods, podID)
+		}
+	}
+	return stopPods, stopErrs
+}
+
+// KillPods kills pods over varlink for the remoteclient
+func (r *LocalRuntime) KillPods(ctx context.Context, cli *cliconfig.PodKillValues, signal uint) ([]string, []error) {
+	var (
+		killErrs []error
+		killPods []string
+	)
+
+	podIDs, err := iopodman.GetPodsByContext().Call(r.Conn, cli.All, cli.Latest, cli.InputArgs)
+	if err != nil {
+		return nil, []error{err}
+	}
+
+	for _, p := range podIDs {
+		podID, err := iopodman.KillPod().Call(r.Conn, p, int64(signal))
+		if err != nil {
+			killErrs = append(killErrs, err)
+		} else {
+			killPods = append(killPods, podID)
+		}
+	}
+	return killPods, killErrs
+}
+
+// StartPods starts pods for the remote client over varlink
+func (r *LocalRuntime) StartPods(ctx context.Context, cli *cliconfig.PodStartValues) ([]string, []error) {
+	var (
+		startErrs []error
+		startPods []string
+	)
+
+	podIDs, err := iopodman.GetPodsByContext().Call(r.Conn, cli.All, cli.Latest, cli.InputArgs)
+	if err != nil {
+		return nil, []error{err}
+	}
+
+	for _, p := range podIDs {
+		podID, err := iopodman.StartPod().Call(r.Conn, p)
+		if err != nil {
+			startErrs = append(startErrs, err)
+		} else {
+			startPods = append(startPods, podID)
+		}
+	}
+	return startPods, startErrs
+}
diff --git a/libpod/adapter/runtime.go b/pkg/adapter/runtime.go
similarity index 100%
rename from libpod/adapter/runtime.go
rename to pkg/adapter/runtime.go
diff --git a/libpod/adapter/runtime_remote.go b/pkg/adapter/runtime_remote.go
similarity index 100%
rename from libpod/adapter/runtime_remote.go
rename to pkg/adapter/runtime_remote.go
diff --git a/libpod/adapter/shortcuts/shortcuts.go b/pkg/adapter/shortcuts/shortcuts.go
similarity index 100%
rename from libpod/adapter/shortcuts/shortcuts.go
rename to pkg/adapter/shortcuts/shortcuts.go
diff --git a/libpod/adapter/volumes_remote.go b/pkg/adapter/volumes_remote.go
similarity index 100%
rename from libpod/adapter/volumes_remote.go
rename to pkg/adapter/volumes_remote.go
diff --git a/pkg/varlinkapi/pods.go b/pkg/varlinkapi/pods.go
index 448f588961..ceeed6681a 100644
--- a/pkg/varlinkapi/pods.go
+++ b/pkg/varlinkapi/pods.go
@@ -2,7 +2,7 @@ package varlinkapi
 
 import (
 	"encoding/json"
-	"github.com/containers/libpod/libpod/adapter/shortcuts"
+	"github.com/containers/libpod/pkg/adapter/shortcuts"
 	"github.com/containers/libpod/pkg/rootless"
 	"syscall"
 
diff --git a/test/e2e/pod_start_test.go b/test/e2e/pod_start_test.go
index 77e8b586df..ce693012d5 100644
--- a/test/e2e/pod_start_test.go
+++ b/test/e2e/pod_start_test.go
@@ -136,6 +136,5 @@ var _ = Describe("Podman pod start", func() {
 		session = podmanTest.Podman([]string{"pod", "start", podid, "doesnotexist"})
 		session.WaitWithDefaultTimeout()
 		Expect(session.ExitCode()).To(Equal(125))
-		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
 	})
 })
diff --git a/test/e2e/pod_stop_test.go b/test/e2e/pod_stop_test.go
index b3d7df2522..38f118964e 100644
--- a/test/e2e/pod_stop_test.go
+++ b/test/e2e/pod_stop_test.go
@@ -137,6 +137,5 @@ var _ = Describe("Podman pod stop", func() {
 		session = podmanTest.Podman([]string{"pod", "stop", podid1, "doesnotexist"})
 		session.WaitWithDefaultTimeout()
 		Expect(session.ExitCode()).To(Equal(125))
-		Expect(podmanTest.NumberOfContainersRunning()).To(Equal(0))
 	})
 })