diff --git a/action/remove.go b/action/remove.go
index 93f7a73..bce45bf 100644
--- a/action/remove.go
+++ b/action/remove.go
@@ -16,11 +16,14 @@
 	if err != nil {
 		msg.Die("Could not find Glide file: %s", err)
 	}
+
+	msg.Info("Preparing to remove %d packages.", len(packages))
 	conf.Imports = rmDeps(packages, conf.Imports)
 	conf.DevImports = rmDeps(packages, conf.DevImports)
 
 	// Copy used to generate locks.
 	confcopy := conf.Clone()
+	inst.Config = confcopy
 
 	confcopy.Imports = inst.List(confcopy)
 
diff --git a/repo/installer.go b/repo/installer.go
index 612ad06..e443d44 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -168,10 +168,10 @@
 
 	// Update imports
 	res, err := dependency.NewResolver(base)
-	res.Config = conf
 	if err != nil {
 		msg.Die("Failed to create a resolver: %s", err)
 	}
+	res.Config = conf
 	res.Handler = m
 	res.VersionHandler = v
 	msg.Info("Resolving imports")
@@ -222,12 +222,24 @@
 
 func (i *Installer) List(conf *cfg.Config) []*cfg.Dependency {
 	base := "."
+	vpath := i.VendorPath()
+
+	v := &VersionHandler{
+		Destination: vpath,
+		Deps:        make(map[string]*cfg.Dependency),
+		Use:         make(map[string]*cfg.Dependency),
+		Imported:    make(map[string]bool),
+		Conflicts:   make(map[string]bool),
+		Config:      conf,
+	}
 
 	// Update imports
 	res, err := dependency.NewResolver(base)
 	if err != nil {
 		msg.Die("Failed to create a resolver: %s", err)
 	}
+	res.Config = conf
+	res.VersionHandler = v
 
 	msg.Info("Resolving imports")
 	packages, err := allPackages(conf.Imports, res)
@@ -236,6 +248,37 @@
 	}
 	deps := depsFromPackages(packages)
 
+	// TODO(mattfarina): We need to not go back and forth between between
+	// paths and cfg.Dependency instances.
+	// If we have conf.Imports we copy them to the final list to pull up elements
+	// like the VCS information.
+	for k, d := range deps {
+		for _, dep := range conf.Imports {
+			if dep.Name == d.Name {
+				deps[k] = dep
+			}
+		}
+	}
+
+	// Copy over the dependency information from the version system which contains
+	// pinned information, VCS info, etc.
+	for _, d := range deps {
+		d2, found := v.Deps[d.Name]
+		if found {
+			d.Pin = d2.Pin
+			if d.Repository == "" {
+				d.Repository = d2.Repository
+			}
+			if d.VcsType == "" {
+				d.VcsType = d2.VcsType
+			}
+			if d.Reference == "" {
+				d.Reference = d2.Reference
+			}
+		}
+	}
+	conf.Imports = deps
+
 	msg.Warn("devImports not resolved.")
 
 	return deps
