diff --git a/godep/strip/strip.go b/godep/strip/strip.go
new file mode 100644
index 0000000..e70d607
--- /dev/null
+++ b/godep/strip/strip.go
@@ -0,0 +1,156 @@
+// Package strip removes Godeps/_workspace and undoes the Godep rewrites. This
+// essentially removes the old style (pre-vendor) Godep vendoring.
+//
+// Note, this functionality is deprecated. Once more projects use the Godep
+// support for the core vendoring this will no longer be needed.
+package strip
+
+import (
+	"bytes"
+	"go/ast"
+	"go/parser"
+	"go/printer"
+	"go/token"
+	"os"
+	"path/filepath"
+	"strconv"
+	"strings"
+
+	"github.com/Masterminds/glide/msg"
+)
+
+var godepMark = map[string]bool{}
+
+var vPath = "vendor"
+
+// GodepWorkspace removes any Godeps/_workspace directories and makes sure
+// any rewrites are undone.
+// Note, this is not concuccency safe.
+func GodepWorkspace(v string) error {
+	vPath = v
+	if _, err := os.Stat(vPath); err != nil {
+		if os.IsNotExist(err) {
+			msg.Debug("Vendor directory does not exist.")
+		}
+
+		return err
+	}
+
+	err := filepath.Walk(vPath, stripGodepWorkspaceHandler)
+	if err != nil {
+		return err
+	}
+
+	// Walk the marked projects to make sure rewrites are undone.
+	for k := range godepMark {
+		msg.Info("Removing Godep rewrites for %s", k)
+		err := filepath.Walk(k, rewriteGodepfilesHandler)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+func stripGodepWorkspaceHandler(path string, info os.FileInfo, err error) error {
+	// Skip the base vendor directory
+	if path == vPath {
+		return nil
+	}
+
+	name := info.Name()
+	p := filepath.Dir(path)
+	pn := filepath.Base(p)
+	if name == "_workspace" && pn == "Godeps" {
+		if _, err := os.Stat(path); err == nil {
+			if info.IsDir() {
+				// Marking this location to make sure rewrites are undone.
+				pp := filepath.Dir(p)
+				godepMark[pp] = true
+
+				msg.Info("Removing: %s", path)
+				return os.RemoveAll(path)
+			}
+
+			msg.Debug("%s is not a directory. Skipping removal", path)
+			return nil
+		}
+	}
+	return nil
+}
+
+func rewriteGodepfilesHandler(path string, info os.FileInfo, err error) error {
+	name := info.Name()
+	if name == "testdata" || name == "vendor" {
+		return filepath.SkipDir
+	}
+
+	if info.IsDir() {
+		return nil
+	}
+
+	if e := filepath.Ext(path); e != ".go" {
+		return nil
+	}
+
+	fset := token.NewFileSet()
+	f, err := parser.ParseFile(fset, path, nil, parser.ParseComments)
+	if err != nil {
+		return err
+	}
+
+	var changed bool
+	for _, s := range f.Imports {
+		n, err := strconv.Unquote(s.Path.Value)
+		if err != nil {
+			return err
+		}
+		q := rewriteGodepImport(n)
+		if q != name {
+			s.Path.Value = strconv.Quote(q)
+			changed = true
+		}
+	}
+	if !changed {
+		return nil
+	}
+
+	printerConfig := &printer.Config{Mode: printer.TabIndent | printer.UseSpaces, Tabwidth: 8}
+	var buffer bytes.Buffer
+	if err = printerConfig.Fprint(&buffer, fset, f); err != nil {
+		return err
+	}
+	fset = token.NewFileSet()
+	f, err = parser.ParseFile(fset, name, &buffer, parser.ParseComments)
+	ast.SortImports(fset, f)
+	tpath := path + ".temp"
+	t, err := os.Create(tpath)
+	if err != nil {
+		return err
+	}
+	if err = printerConfig.Fprint(t, fset, f); err != nil {
+		return err
+	}
+	if err = t.Close(); err != nil {
+		return err
+	}
+
+	msg.Debug("Rewriting Godep imports for %s", path)
+
+	// This is required before the rename on windows.
+	if err = os.Remove(path); err != nil {
+		return err
+	}
+	return os.Rename(tpath, path)
+}
+
+func rewriteGodepImport(n string) string {
+	if !strings.Contains(n, "Godeps/_workspace/src") {
+		return n
+	}
+
+	i := strings.LastIndex(n, "Godeps/_workspace/src")
+
+	return strings.TrimPrefix(n[i:], "Godeps/_workspace/src/")
+}
diff --git a/godep/strip/strip_test.go b/godep/strip/strip_test.go
new file mode 100644
index 0000000..e260a30
--- /dev/null
+++ b/godep/strip/strip_test.go
@@ -0,0 +1,17 @@
+package strip
+
+import "testing"
+
+func TestRewriteGodepImport(t *testing.T) {
+	tests := map[string]string{
+		"github.com/Masterminds/glide/action":                           "github.com/Masterminds/glide/action",
+		"github.com/tools/godep/Godeps/_workspace/src/github.com/kr/fs": "github.com/kr/fs",
+	}
+
+	for k, v := range tests {
+		o := rewriteGodepImport(k)
+		if o != v {
+			t.Errorf("Incorrect Godep import path rewritten %s: %s", v, o)
+		}
+	}
+}
diff --git a/path/strip.go b/path/strip.go
index 6f8698d..1162f38 100644
--- a/path/strip.go
+++ b/path/strip.go
@@ -1,16 +1,10 @@
 package path
 
 import (
-	"bytes"
-	"go/ast"
-	"go/parser"
-	"go/printer"
-	"go/token"
 	"os"
 	"path/filepath"
-	"strconv"
-	"strings"
 
+	"github.com/Masterminds/glide/godep/strip"
 	"github.com/Masterminds/glide/msg"
 )
 
@@ -59,7 +53,9 @@
 		return err
 	}
 
-	return StripGodepWorkspace()
+	err = strip.GodepWorkspace(VendorDir)
+
+	return err
 }
 
 func stripVendorHandler(path string, info os.FileInfo, err error) error {
@@ -82,136 +78,3 @@
 	}
 	return nil
 }
-
-var godepMark = map[string]bool{}
-
-// StripGodepWorkspace removes any Godeps/_workspace directories and makes sure
-// any rewrites are undone.
-// Note, this is not concuccency safe.
-func StripGodepWorkspace() error {
-	if _, err := os.Stat(VendorDir); err != nil {
-		if os.IsNotExist(err) {
-			msg.Debug("Vendor directory does not exist.")
-		}
-
-		return err
-	}
-
-	err := filepath.Walk(VendorDir, stripGodepWorkspaceHandler)
-	if err != nil {
-		return err
-	}
-
-	// Walk the marked projects to make sure rewrites are undone.
-	for k := range godepMark {
-		msg.Info("Removing Godep rewrites for %s", k)
-		err := filepath.Walk(k, rewriteGodepfilesHandler)
-		if err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-func stripGodepWorkspaceHandler(path string, info os.FileInfo, err error) error {
-	// Skip the base vendor directory
-	if path == VendorDir {
-		return nil
-	}
-
-	name := info.Name()
-	p := filepath.Dir(path)
-	pn := filepath.Base(p)
-	if name == "_workspace" && pn == "Godeps" {
-		if _, err := os.Stat(path); err == nil {
-			if info.IsDir() {
-				// Marking this location to make sure rewrites are undone.
-				pp := filepath.Dir(p)
-				godepMark[pp] = true
-
-				msg.Info("Removing: %s", path)
-				return os.RemoveAll(path)
-			}
-
-			msg.Debug("%s is not a directory. Skipping removal", path)
-			return nil
-		}
-	}
-	return nil
-}
-
-func rewriteGodepfilesHandler(path string, info os.FileInfo, err error) error {
-	name := info.Name()
-	if name == "testdata" || name == "vendor" {
-		return filepath.SkipDir
-	}
-
-	if info.IsDir() {
-		return nil
-	}
-
-	if e := filepath.Ext(path); e != ".go" {
-		return nil
-	}
-
-	fset := token.NewFileSet()
-	f, err := parser.ParseFile(fset, path, nil, parser.ParseComments)
-	if err != nil {
-		return err
-	}
-
-	var changed bool
-	for _, s := range f.Imports {
-		n, err := strconv.Unquote(s.Path.Value)
-		if err != nil {
-			return err
-		}
-		q := rewriteGodepImport(n)
-		if q != name {
-			s.Path.Value = strconv.Quote(q)
-			changed = true
-		}
-	}
-	if !changed {
-		return nil
-	}
-
-	printerConfig := &printer.Config{Mode: printer.TabIndent | printer.UseSpaces, Tabwidth: 8}
-	var buffer bytes.Buffer
-	if err = printerConfig.Fprint(&buffer, fset, f); err != nil {
-		return err
-	}
-	fset = token.NewFileSet()
-	f, err = parser.ParseFile(fset, name, &buffer, parser.ParseComments)
-	ast.SortImports(fset, f)
-	tpath := path + ".temp"
-	t, err := os.Create(tpath)
-	if err != nil {
-		return err
-	}
-	if err = printerConfig.Fprint(t, fset, f); err != nil {
-		return err
-	}
-	if err = t.Close(); err != nil {
-		return err
-	}
-
-	msg.Debug("Rewriting Godep imports for %s", path)
-
-	// This is required before the rename on windows.
-	if err = os.Remove(path); err != nil {
-		return err
-	}
-	return os.Rename(tpath, path)
-}
-
-func rewriteGodepImport(n string) string {
-	if !strings.Contains(n, "Godeps/_workspace/src") {
-		return n
-	}
-
-	i := strings.LastIndex(n, "Godeps/_workspace/src")
-
-	return strings.TrimPrefix(n[i:], "Godeps/_workspace/src/")
-}
diff --git a/path/strip_test.go b/path/strip_test.go
index eb0789c..6c11194 100644
--- a/path/strip_test.go
+++ b/path/strip_test.go
@@ -65,17 +65,3 @@
 		t.Error(".svn directory not deleted")
 	}
 }
-
-func TestRewriteGodepImport(t *testing.T) {
-	tests := map[string]string{
-		"github.com/Masterminds/glide/action":                           "github.com/Masterminds/glide/action",
-		"github.com/tools/godep/Godeps/_workspace/src/github.com/kr/fs": "github.com/kr/fs",
-	}
-
-	for k, v := range tests {
-		o := rewriteGodepImport(k)
-		if o != v {
-			t.Errorf("Incorrect Godep import path rewritten %s: %s", v, o)
-		}
-	}
-}
