Old code cleanup. Removing functionality no longer needed.
diff --git a/action/config_wizard.go b/action/config_wizard.go
index e941399..ae2b317 100644
--- a/action/config_wizard.go
+++ b/action/config_wizard.go
@@ -18,6 +18,7 @@
 // ConfigWizard reads configuration from a glide.yaml file and attempts to suggest
 // improvements. The wizard is interactive.
 func ConfigWizard(base string) {
+	cache.SystemLock()
 	_, err := gpath.Glide()
 	glidefile := gpath.GlideFile
 	if err != nil {
diff --git a/action/get.go b/action/get.go
index aab0e4a..0d5e004 100644
--- a/action/get.go
+++ b/action/get.go
@@ -19,9 +19,7 @@
 //
 // This includes resolving dependency resolution and re-generating the lock file.
 func Get(names []string, installer *repo.Installer, insecure, skipRecursive, stripVendor, nonInteract, testDeps bool) {
-	if installer.UseCache {
-		cache.SystemLock()
-	}
+	cache.SystemLock()
 
 	base := gpath.Basepath()
 	EnsureGopath()
diff --git a/action/install.go b/action/install.go
index b3f5052..2247e1f 100644
--- a/action/install.go
+++ b/action/install.go
@@ -13,9 +13,7 @@
 
 // Install installs a vendor directory based on an existing Glide configuration.
 func Install(installer *repo.Installer, stripVendor bool) {
-	if installer.UseCache {
-		cache.SystemLock()
-	}
+	cache.SystemLock()
 
 	base := "."
 	// Ensure GOPATH
diff --git a/action/list.go b/action/list.go
index f4b3379..29d815f 100644
--- a/action/list.go
+++ b/action/list.go
@@ -25,7 +25,7 @@
 	if err != nil {
 		msg.Die("Could not create a resolver: %s", err)
 	}
-	h := &dependency.DefaultMissingPackageHandler{Missing: []string{}, Gopath: []string{}}
+	h := &dependency.DefaultMissingPackageHandler{Missing: []string{}, Gopath: []string{}, Prefix: "vendor"}
 	r.Handler = h
 
 	localPkgs, _, err := r.ResolveLocal(deep)
diff --git a/action/remove.go b/action/remove.go
index bdf96a1..63a6a58 100644
--- a/action/remove.go
+++ b/action/remove.go
@@ -1,6 +1,7 @@
 package action
 
 import (
+	"github.com/Masterminds/glide/cache"
 	"github.com/Masterminds/glide/cfg"
 	"github.com/Masterminds/glide/msg"
 	gpath "github.com/Masterminds/glide/path"
@@ -9,6 +10,7 @@
 
 // Remove removes a dependncy from the configuration.
 func Remove(packages []string, inst *repo.Installer) {
+	cache.SystemLock()
 	base := gpath.Basepath()
 	EnsureGopath()
 	EnsureVendorDir()
diff --git a/action/update.go b/action/update.go
index 219c98e..91891f4 100644
--- a/action/update.go
+++ b/action/update.go
@@ -13,9 +13,7 @@
 
 // Update updates repos and the lock file from the main glide yaml.
 func Update(installer *repo.Installer, skipRecursive, stripVendor bool) {
-	if installer.UseCache {
-		cache.SystemLock()
-	}
+	cache.SystemLock()
 
 	base := "."
 	EnsureGopath()
diff --git a/cfg/config.go b/cfg/config.go
index 60d385b..06ba9b9 100644
--- a/cfg/config.go
+++ b/cfg/config.go
@@ -368,15 +368,14 @@
 
 // Dependency describes a package that the present package depends upon.
 type Dependency struct {
-	Name             string   `yaml:"package"`
-	Reference        string   `yaml:"version,omitempty"`
-	Pin              string   `yaml:"-"`
-	Repository       string   `yaml:"repo,omitempty"`
-	VcsType          string   `yaml:"vcs,omitempty"`
-	Subpackages      []string `yaml:"subpackages,omitempty"`
-	Arch             []string `yaml:"arch,omitempty"`
-	Os               []string `yaml:"os,omitempty"`
-	UpdateAsVendored bool     `yaml:"-"`
+	Name        string   `yaml:"package"`
+	Reference   string   `yaml:"version,omitempty"`
+	Pin         string   `yaml:"-"`
+	Repository  string   `yaml:"repo,omitempty"`
+	VcsType     string   `yaml:"vcs,omitempty"`
+	Subpackages []string `yaml:"subpackages,omitempty"`
+	Arch        []string `yaml:"arch,omitempty"`
+	Os          []string `yaml:"os,omitempty"`
 }
 
 // A transitive representation of a dependency for importing and exploting to yaml.
@@ -506,15 +505,14 @@
 // Clone creates a clone of a Dependency
 func (d *Dependency) Clone() *Dependency {
 	return &Dependency{
-		Name:             d.Name,
-		Reference:        d.Reference,
-		Pin:              d.Pin,
-		Repository:       d.Repository,
-		VcsType:          d.VcsType,
-		Subpackages:      d.Subpackages,
-		Arch:             d.Arch,
-		Os:               d.Os,
-		UpdateAsVendored: d.UpdateAsVendored,
+		Name:        d.Name,
+		Reference:   d.Reference,
+		Pin:         d.Pin,
+		Repository:  d.Repository,
+		VcsType:     d.VcsType,
+		Subpackages: d.Subpackages,
+		Arch:        d.Arch,
+		Os:          d.Os,
 	}
 }
 
diff --git a/dependency/delete.go b/dependency/delete.go
deleted file mode 100644
index 6456370..0000000
--- a/dependency/delete.go
+++ /dev/null
@@ -1,106 +0,0 @@
-package dependency
-
-import (
-	"errors"
-	"os"
-	"path/filepath"
-	"strings"
-
-	"github.com/Masterminds/glide/cfg"
-	"github.com/Masterminds/glide/msg"
-	gpath "github.com/Masterminds/glide/path"
-)
-
-// DeleteUnused removes packages from vendor/ that are no longer used.
-//
-// TODO: This should work off of a Lock file, not glide.yaml.
-func DeleteUnused(conf *cfg.Config) error {
-	vpath, err := gpath.Vendor()
-	if err != nil {
-		return err
-	}
-	if vpath == "" {
-		return errors.New("Vendor not set")
-	}
-
-	// Build directory tree of what to keep.
-	var pkgList []string
-	for _, dep := range conf.Imports {
-		pkgList = append(pkgList, dep.Name)
-	}
-	for _, dep := range conf.DevImports {
-		pkgList = append(pkgList, dep.Name)
-	}
-
-	var searchPath string
-	var markForDelete []string
-	// Callback function for filepath.Walk to delete packages not in yaml file.
-	fn := func(path string, info os.FileInfo, err error) error {
-		// Bubble up the error
-		if err != nil {
-			return err
-		}
-
-		if info.IsDir() == false || path == searchPath || path == vpath {
-			return nil
-		}
-
-		localPath := strings.TrimPrefix(path, searchPath)
-		keep := false
-
-		// First check if the path has a prefix that's a specific package. If
-		// so we keep it to keep the package.
-		for _, name := range pkgList {
-			if strings.HasPrefix(localPath, name) {
-				keep = true
-			}
-		}
-
-		// If a package is, for example, github.com/Masterminds/glide the
-		// previous look will not mark the directories github.com or
-		// github.com/Masterminds to keep. Here we see if these names prefix
-		// and packages we know about to mark as keepers.
-		if keep == false {
-			for _, name := range pkgList {
-				if strings.HasPrefix(name, localPath) {
-					keep = true
-				}
-			}
-		}
-
-		// If the parent directory has already been marked for delete this
-		// directory doesn't need to be marked.
-		for _, markedDirectory := range markForDelete {
-			if strings.HasPrefix(path, markedDirectory) {
-				return nil
-			}
-		}
-
-		// Remove the directory if we are not keeping it.
-		if keep == false {
-			// Mark for deletion
-			markForDelete = append(markForDelete, path)
-		}
-
-		return nil
-	}
-
-	// Walk vendor directory
-	searchPath = vpath + string(os.PathSeparator)
-	err = filepath.Walk(searchPath, fn)
-	if err != nil {
-		return err
-	}
-
-	// Perform the actual delete.
-	for _, path := range markForDelete {
-		localPath := strings.TrimPrefix(path, searchPath)
-		msg.Info("Removing unused package: %s\n", localPath)
-		rerr := os.RemoveAll(path)
-		if rerr != nil {
-			return rerr
-		}
-	}
-
-	return nil
-}
diff --git a/dependency/resolver.go b/dependency/resolver.go
index 5a31ae2..b3000ee 100644
--- a/dependency/resolver.go
+++ b/dependency/resolver.go
@@ -64,6 +64,7 @@
 type DefaultMissingPackageHandler struct {
 	Missing []string
 	Gopath  []string
+	Prefix  string
 }
 
 // NotFound prints a warning and then stores the package name in Missing.
@@ -88,7 +89,11 @@
 	return nil
 }
 
+// PkgPath returns the path to the package
 func (d *DefaultMissingPackageHandler) PkgPath(pkg string) string {
+	if d.Prefix != "" {
+		return filepath.Join(d.Prefix, pkg)
+	}
 	return pkg
 }
 
@@ -486,9 +491,9 @@
 			// try to brute force the packages with a slower scan.
 			msg.Debug("Using Iterative Scanning for %s", dep)
 			if testDeps {
-				_, imps, err = IterativeScan(vdep)
+				_, imps, err = IterativeScan(r.Handler.PkgPath(dep))
 			} else {
-				imps, _, err = IterativeScan(vdep)
+				imps, _, err = IterativeScan(r.Handler.PkgPath(dep))
 			}
 
 			if err != nil {
@@ -496,7 +501,7 @@
 				continue
 			}
 		} else if err != nil {
-			msg.Debug("ImportDir error on %s: %s", vdep, err)
+			msg.Debug("ImportDir error on %s: %s", r.Handler.PkgPath(dep), err)
 			if strings.HasPrefix(err.Error(), "no buildable Go source") {
 				msg.Debug("No subpackages declared. Skipping %s.", dep)
 				continue
@@ -782,9 +787,9 @@
 		// or main but +build ignore as a build tag. In that case we
 		// try to brute force the packages with a slower scan.
 		if testDeps {
-			_, imps, err = IterativeScan(pkg)
+			_, imps, err = IterativeScan(r.Handler.PkgPath(pkg))
 		} else {
-			imps, _, err = IterativeScan(pkg)
+			imps, _, err = IterativeScan(r.Handler.PkgPath(pkg))
 		}
 
 		if err != nil {
diff --git a/glide.lock b/glide.lock
index 06b0f01..2d3fc9c 100644
--- a/glide.lock
+++ b/glide.lock
@@ -1,5 +1,5 @@
 hash: 67c5571c33bfcb663d32d2b40b9ce1f2a05a3fa2e9f442077277c2782195729c
-updated: 2016-08-11T14:07:30.163990133-04:00
+updated: 2016-08-11T14:22:17.773372627-04:00
 imports:
 - name: github.com/codegangsta/cli
   version: 1efa31f08b9333f1bd4882d61f9d668a70cd902e
diff --git a/path/strip.go b/path/strip.go
index be00be9..62c5fd8 100644
--- a/path/strip.go
+++ b/path/strip.go
@@ -8,35 +8,6 @@
 	"github.com/Masterminds/glide/msg"
 )
 
-// StripVcs removes VCS metadata (.git, .hg, .bzr, .svn) from the vendor/
-// directory.
-func StripVcs() error {
-	searchPath, _ := Vendor()
-	if _, err := os.Stat(searchPath); err != nil {
-		if os.IsNotExist(err) {
-			msg.Debug("Vendor directory does not exist.")
-		}
-
-		return err
-	}
-
-	return filepath.Walk(searchPath, func(path string, info os.FileInfo, err error) error {
-		name := info.Name()
-		if name == ".git" || name == ".bzr" || name == ".svn" || name == ".hg" {
-			if _, err := os.Stat(path); err == nil {
-				if info.IsDir() {
-					msg.Info("Removing: %s", path)
-					return os.RemoveAll(path)
-				}
-
-				msg.Debug("%s is not a directory. Skipping removal", path)
-				return nil
-			}
-		}
-		return nil
-	})
-}
-
 // StripVendor removes nested vendor and Godeps/_workspace/ directories.
 func StripVendor() error {
 	searchPath, _ := Vendor()
diff --git a/path/strip_test.go b/path/strip_test.go
deleted file mode 100644
index 23e9d94..0000000
--- a/path/strip_test.go
+++ /dev/null
@@ -1,75 +0,0 @@
-package path
-
-import (
-	"io/ioutil"
-	"os"
-	"path/filepath"
-	"testing"
-)
-
-func TestStripVcs(t *testing.T) {
-	tempDir, err := ioutil.TempDir("", "strip-vcs")
-	if err != nil {
-		t.Error(err)
-	}
-
-	defer func() {
-		err = os.RemoveAll(tempDir)
-		if err != nil {
-			t.Error(err)
-		}
-	}()
-
-	// Make VCS directories.
-	v := filepath.Join(tempDir, VendorDir)
-	err = os.Mkdir(v, 0755)
-	if err != nil {
-		t.Error(err)
-	}
-
-	gp := filepath.Join(tempDir, VendorDir, ".git")
-	err = os.Mkdir(gp, 0755)
-	if err != nil {
-		t.Error(err)
-	}
-
-	bp := filepath.Join(tempDir, VendorDir, ".bzr")
-	err = os.Mkdir(bp, 0755)
-	if err != nil {
-		t.Error(err)
-	}
-
-	hp := filepath.Join(tempDir, VendorDir, ".hg")
-	err = os.Mkdir(hp, 0755)
-	if err != nil {
-		t.Error(err)
-	}
-
-	sp := filepath.Join(tempDir, VendorDir, ".svn")
-	err = os.Mkdir(sp, 0755)
-	if err != nil {
-		t.Error(err)
-	}
-
-	wd, _ := os.Getwd()
-	os.Chdir(tempDir)
-
-	if err := StripVcs(); err != nil {
-		t.Errorf("Failed to strip vcs: %s", err)
-	}
-
-	os.Chdir(wd)
-
-	if _, err := os.Stat(gp); !os.IsNotExist(err) {
-		t.Error(".git directory not deleted")
-	}
-	if _, err := os.Stat(hp); !os.IsNotExist(err) {
-		t.Error(".hg directory not deleted")
-	}
-	if _, err := os.Stat(bp); !os.IsNotExist(err) {
-		t.Error(".bzr directory not deleted")
-	}
-	if _, err := os.Stat(sp); !os.IsNotExist(err) {
-		t.Error(".svn directory not deleted")
-	}
-}
diff --git a/repo/installer.go b/repo/installer.go
index 99a6452..bb46db2 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -32,20 +32,6 @@
 	// Vendor contains the path to put the vendor packages
 	Vendor string
 
-	// Use a cache
-	UseCache bool
-	// Use Gopath to cache
-	UseCacheGopath bool
-	// Use Gopath as a source to read from
-	UseGopath bool
-
-	// UpdateVendored instructs the environment to update in a way that is friendly
-	// to packages that have been "vendored in" (e.g. are copies of source, not repos)
-	UpdateVendored bool
-
-	// DeleteUnused deletes packages that are unused, but found in the vendor dir.
-	DeleteUnused bool
-
 	// ResolveAllFiles enables a resolver that will examine the dependencies
 	// of every file of every package, rather than only following imported
 	// packages.
@@ -145,16 +131,11 @@
 
 	m := &MissingPackageHandler{
 		destination: vpath,
-
-		cache:          i.UseCache,
-		cacheGopath:    i.UseCacheGopath,
-		useGopath:      i.UseGopath,
-		home:           i.Home,
-		force:          i.Force,
-		updateVendored: i.UpdateVendored,
-		Config:         conf,
-		Use:            ic,
-		updated:        i.Updated,
+		home:        i.Home,
+		force:       i.Force,
+		Config:      conf,
+		Use:         ic,
+		updated:     i.Updated,
 	}
 
 	v := &VersionHandler{
@@ -502,12 +483,12 @@
 //
 // When a package is found on the GOPATH, this notifies the user.
 type MissingPackageHandler struct {
-	destination                                          string
-	home                                                 string
-	cache, cacheGopath, useGopath, force, updateVendored bool
-	Config                                               *cfg.Config
-	Use                                                  *importCache
-	updated                                              *UpdateTracker
+	destination string
+	home        string
+	force       bool
+	Config      *cfg.Config
+	Use         *importCache
+	updated     *UpdateTracker
 }
 
 // NotFound attempts to retrieve a package when not found in the local vendor/
@@ -573,11 +554,6 @@
 // vendor/ directory or download it from the internet. This is dependent if
 // useGopath on the installer is set to true to copy from the GOPATH.
 func (m *MissingPackageHandler) OnGopath(pkg string, addTest bool) (bool, error) {
-	// If useGopath is false, we fall back to the strategy of fetching from
-	// remote.
-	if !m.useGopath {
-		return m.NotFound(pkg, addTest)
-	}
 
 	root := util.GetRootFromPackage(pkg)
 
diff --git a/repo/vendored_cleanup.go b/repo/vendored_cleanup.go
deleted file mode 100644
index acbab91..0000000
--- a/repo/vendored_cleanup.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package repo
-
-import (
-	"os"
-	"path/filepath"
-
-	"github.com/Masterminds/glide/cfg"
-	"github.com/Masterminds/glide/msg"
-	gpath "github.com/Masterminds/glide/path"
-)
-
-// VendoredCleanup cleans up vendored codebases after an update.
-//
-// This should _only_ be run for installations that do not want VCS repos inside
-// of the vendor/ directory.
-func VendoredCleanup(conf *cfg.Config) error {
-	vend, err := gpath.Vendor()
-	if err != nil {
-		return err
-	}
-
-	for _, dep := range conf.Imports {
-		if dep.UpdateAsVendored == true {
-			msg.Info("Cleaning up vendored package %s\n", dep.Name)
-
-			// Remove the VCS directory
-			cwd := filepath.Join(vend, dep.Name)
-			repo, err := dep.GetRepo(cwd)
-			if err != nil {
-				msg.Err("Error cleaning up %s:%s", dep.Name, err)
-				continue
-			}
-			t := repo.Vcs()
-			err = os.RemoveAll(cwd + string(os.PathSeparator) + "." + string(t))
-			if err != nil {
-				msg.Err("Error cleaning up VCS dir for %s:%s", dep.Name, err)
-			}
-		}
-
-	}
-
-	return nil
-}