De-dupe packages during scan.
diff --git a/dependency/resolver.go b/dependency/resolver.go
index 4c2fa13..545ff8c 100644
--- a/dependency/resolver.go
+++ b/dependency/resolver.go
@@ -288,6 +288,8 @@
 	for e := queue.Front(); e != nil; e = e.Next() {
 		dep := e.Value.(string)
 
+		r.alreadyQ[dep] = true
+
 		// Skip ignored packages
 		t := strings.TrimPrefix(dep, r.VendorDir+string(os.PathSeparator))
 		if r.Config.HasIgnore(t) {
@@ -312,7 +314,10 @@
 			switch pi.Loc {
 			case LocVendor:
 				msg.Info("Already vendored: %s", imp)
-				queue.PushBack(imp)
+				if _, ok := r.alreadyQ[imp]; !ok {
+					r.alreadyQ[imp] = true
+					queue.PushBack(imp)
+				}
 			case LocUnknown:
 				msg.Info("Not found: %s (2)", imp)
 				// FIXME: respond to NotFound
@@ -321,7 +326,10 @@
 				msg.Info("Found on GOPATH, not vendor: %s", imp)
 				// FIXME: respond to NotFound
 				r.Handler.OnGopath(imp)
-				queue.PushBack(imp)
+				if _, ok := r.alreadyQ[imp]; !ok {
+					r.alreadyQ[imp] = true
+					queue.PushBack(imp)
+				}
 			}
 		}