diff --git a/dependency/resolver.go b/dependency/resolver.go
index 3eb5772..46dd3da 100644
--- a/dependency/resolver.go
+++ b/dependency/resolver.go
@@ -76,6 +76,9 @@
 // version.
 type VersionHandler interface {
 
+	// Process provides an opportunity to process the codebase for version setting.
+	Process(pkg string) error
+
 	// SetVersion sets the version for a package. An error is returned if there
 	// was a problem setting the version.
 	SetVersion(pkg string) error
@@ -88,6 +91,11 @@
 // package as part of the installer.
 type DefaultVersionHandler struct{}
 
+// Process a package to aide in version setting.
+func (d *DefaultVersionHandler) Process(pkg string) error {
+	return nil
+}
+
 // SetVersion here sends a message when a package is found noting that it
 // did not set the version.
 func (d *DefaultVersionHandler) SetVersion(pkg string) error {
@@ -278,6 +286,8 @@
 	var failedDep string
 	for e := queue.Front(); e != nil; e = e.Next() {
 		dep := e.Value.(string)
+		t := strings.TrimPrefix(e.Value.(string), r.VendorDir+string(os.PathSeparator))
+		r.VersionHandler.Process(t)
 		//msg.Warn("#### %s ####", dep)
 		//msg.Info("Seen Count: %d", len(r.seen))
 		// Catch the outtermost dependency.
diff --git a/repo/installer.go b/repo/installer.go
index fd8ed5d..d69e811 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -165,25 +165,6 @@
 		Config:      conf,
 	}
 
-	// Prepopulate the import cache with imports from the top level dependencies
-	// we are assuming are present.
-	for _, d := range conf.Imports {
-		v.Imported[d.Name] = true
-		p := filepath.Join(i.VendorPath(), d.Name)
-		f, deps, err := importer.Import(p)
-		if f && err == nil {
-
-			for _, dep := range deps {
-				exists := ic.Get(dep.Name)
-				if exists == nil && (dep.Reference != "" || dep.Repository != "") {
-					ic.Add(dep.Name, dep)
-				}
-			}
-		} else if err != nil {
-			msg.Error("Unable to import from %s. Err: %s", d.Name, err)
-		}
-	}
-
 	// Update imports
 	res, err := dependency.NewResolver(base)
 	if err != nil {
@@ -421,12 +402,8 @@
 	Conflicts map[string]bool
 }
 
-// SetVersion sets the version for a package. If that package version is already
-// set it handles the case by:
-// - keeping the already set version
-// - proviting messaging about the version conflict
-// TODO(mattfarina): The way version setting happens can be improved. Currently not optimal.
-func (d *VersionHandler) SetVersion(pkg string) (e error) {
+// Process imports dependencies for a package
+func (d *VersionHandler) Process(pkg string) (e error) {
 	root := util.GetRootFromPackage(pkg)
 
 	// Skip any references to the root package.
@@ -437,8 +414,6 @@
 		return nil
 	}
 
-	v := d.Config.Imports.Get(root)
-
 	// We have not tried to import, yet.
 	// Should we look in places other than the root of the project?
 	if d.Imported[root] == false {
@@ -460,6 +435,27 @@
 		}
 	}
 
+	return
+}
+
+// SetVersion sets the version for a package. If that package version is already
+// set it handles the case by:
+// - keeping the already set version
+// - proviting messaging about the version conflict
+// TODO(mattfarina): The way version setting happens can be improved. Currently not optimal.
+func (d *VersionHandler) SetVersion(pkg string) (e error) {
+	root := util.GetRootFromPackage(pkg)
+
+	// Skip any references to the root package.
+	if root == d.RootPackage {
+		return nil
+	}
+	if d.Config.HasIgnore(root) || d.Config.HasIgnore(pkg) {
+		return nil
+	}
+
+	v := d.Config.Imports.Get(root)
+
 	dep := d.Use.Get(root)
 	if dep != nil && v != nil {
 		if v.Reference == "" && dep.Reference != "" {
