diff --git a/action/get.go b/action/get.go
index e74ec52..5b0b72e 100644
--- a/action/get.go
+++ b/action/get.go
@@ -217,7 +217,7 @@
 		if dep.Reference != "" {
 			msg.Info("--> Adding %s to your configuration with the version %s", dep.Name, dep.Reference)
 		} else {
-			msg.Info("--> Adding %s to your configuration %s", dep.Name)
+			msg.Info("--> Adding %s to your configuration", dep.Name)
 		}
 
 		if testDeps {
diff --git a/dependency/resolver.go b/dependency/resolver.go
index 72ad234..c967ee7 100644
--- a/dependency/resolver.go
+++ b/dependency/resolver.go
@@ -2,7 +2,6 @@
 
 import (
 	"container/list"
-	"fmt"
 	"runtime"
 	//"go/build"
 	"os"
@@ -865,7 +864,6 @@
 				if v != "." && v != "" {
 					ip = ip + "/" + v
 				}
-				fmt.Println(ip)
 				msg.Debug("Adding local Import %s to queue", ip)
 				l.PushBack(filepath.Join(basepath, filepath.FromSlash(ip)))
 			}
diff --git a/repo/installer.go b/repo/installer.go
index 614c19c..6f4b2d0 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -124,6 +124,8 @@
 		return newConf, nil
 	}
 
+	msg.Info("Downloading dependencies. Please wait...")
+
 	ConcurrentUpdate(newConf.Imports, cwd, i, newConf)
 	ConcurrentUpdate(newConf.DevImports, cwd, i, newConf)
 	return newConf, nil
@@ -137,6 +139,8 @@
 
 	dest := i.VendorPath()
 
+	msg.Info("Downloading dependencies. Please wait...")
+
 	if err := ConcurrentUpdate(conf.Imports, dest, i, conf); err != nil {
 		return err
 	}
@@ -254,6 +258,8 @@
 		}
 	}
 
+	msg.Info("Downloading dependencies. Please wait...")
+
 	err = ConcurrentUpdate(conf.Imports, vpath, i, conf)
 	if err != nil {
 		return err
@@ -319,8 +325,6 @@
 	var lock sync.Mutex
 	var returnErr error
 
-	msg.Info("Downloading dependencies. Please wait...")
-
 	for ii := 0; ii < concurrentWorkers; ii++ {
 		go func(ch <-chan *cfg.Dependency) {
 			for {
diff --git a/repo/vcs.go b/repo/vcs.go
index a5a2c97..31bed50 100644
--- a/repo/vcs.go
+++ b/repo/vcs.go
@@ -36,7 +36,7 @@
 	}
 	updated.Add(dep.Name)
 
-	msg.Info("Fetching updates for %s.", 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)
@@ -207,7 +207,7 @@
 		// If there is a ^ prefix we assume it's a semver constraint rather than
 		// part of the git/VCS commit id.
 		if repo.IsReference(ver) && !strings.HasPrefix(ver, "^") {
-			msg.Info("Setting version for %s to %s.\n", dep.Name, ver)
+			msg.Info("--> Setting version for %s to %s.\n", dep.Name, ver)
 		} else {
 
 			// Create the constraing first to make sure it's valid before
@@ -242,9 +242,9 @@
 				}
 			}
 			if found {
-				msg.Info("Detected semantic version. Setting version for %s to %s.\n", dep.Name, ver)
+				msg.Info("--> Detected semantic version. Setting version for %s to %s.", dep.Name, ver)
 			} else {
-				msg.Warn("Unable to find semantic version for constraint %s %s\n", dep.Name, ver)
+				msg.Warn("--> Unable to find semantic version for constraint %s %s", dep.Name, ver)
 			}
 		}
 		if err := repo.UpdateVersion(ver); err != nil {
