diff --git a/repo/installer.go b/repo/installer.go
index 867ed99..7040876 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -201,26 +201,38 @@
 	}
 	for _, v := range imps {
 		n := res.Stripv(v)
-		d := conf.Imports.Get(n)
+		rt, sub := util.NormalizeName(n)
+		d := conf.Imports.Get(rt)
 		if d == nil {
 			nd := &cfg.Dependency{
-				Name: n,
+				Name: rt,
+			}
+			if sub != "" {
+				nd.Subpackages = []string{sub}
 			}
 			conf.Imports = append(conf.Imports, nd)
+		} else if sub != "" && !d.HasSubpackage(sub) {
+			d.Subpackages = append(d.Subpackages, sub)
 		}
 	}
 	if i.ResolveTest {
 		for _, v := range timps {
 			n := res.Stripv(v)
-			d := conf.Imports.Get(n)
+			rt, sub := util.NormalizeName(n)
+			d := conf.Imports.Get(rt)
 			if d == nil {
-				d = conf.DevImports.Get(n)
+				d = conf.DevImports.Get(rt)
 			}
 			if d == nil {
 				nd := &cfg.Dependency{
 					Name: n,
 				}
+				if sub != "" {
+					nd.Subpackages = []string{sub}
+				}
 				conf.DevImports = append(conf.DevImports, nd)
+			} else if sub != "" && !d.HasSubpackage(sub) {
+				d.Subpackages = append(d.Subpackages, sub)
 			}
 		}
 	}
@@ -400,7 +412,6 @@
 // folder. It will attempt to get it from the remote location info.
 func (m *MissingPackageHandler) NotFound(pkg string, addTest bool) (bool, error) {
 	root := util.GetRootFromPackage(pkg)
-
 	// Skip any references to the root package.
 	if root == m.Config.Name {
 		return false, nil
@@ -498,7 +509,6 @@
 // is available.
 func (m *MissingPackageHandler) InVendor(pkg string, addTest bool) error {
 	root := util.GetRootFromPackage(pkg)
-
 	// Skip any references to the root package.
 	if root == m.Config.Name {
 		return nil
diff --git a/repo/vcs.go b/repo/vcs.go
index b2d471f..a5a2c97 100644
--- a/repo/vcs.go
+++ b/repo/vcs.go
@@ -36,7 +36,7 @@
 	}
 	updated.Add(dep.Name)
 
-	msg.Info("Fetching updates for %s.\n", dep.Name)
+	msg.Info("Fetching updates for %s.", dep.Name)
 
 	if filterArchOs(dep) {
 		msg.Info("%s is not used for %s/%s.\n", dep.Name, runtime.GOOS, runtime.GOARCH)
