diff --git a/util/util.go b/util/util.go
index fb8267a..cd26d31 100644
--- a/util/util.go
+++ b/util/util.go
@@ -74,40 +74,40 @@
 	checkURL := u.String()
 	resp, err := http.Get(checkURL)
 	if err != nil {
-		addToRemotePackageCache(pkg)
+		addToRemotePackageCache(pkg, pkg)
 		return pkg
 	}
 	defer resp.Body.Close()
 
 	nu, err := parseImportFromBody(u, resp.Body)
 	if err != nil {
-		addToRemotePackageCache(pkg)
+		addToRemotePackageCache(pkg, pkg)
 		return pkg
 	} else if nu == "" {
-		addToRemotePackageCache(pkg)
+		addToRemotePackageCache(pkg, pkg)
 		return pkg
 	}
 
-	addToRemotePackageCache(nu)
+	addToRemotePackageCache(pkg, nu)
 	return nu
 }
 
 // The caching is not concurrency safe but should be made to be that way.
 // This implementation is far too much of a hack... rewrite needed.
-var remotePackageCache = make(map[string]bool)
+var remotePackageCache = make(map[string]string)
 
 func checkRemotePackageCache(pkg string) (string, bool) {
-	for k := range remotePackageCache {
-		if strings.HasPrefix(pkg, k) {
-			return k, true
+	for k, v := range remotePackageCache {
+		if pkg == k {
+			return v, true
 		}
 	}
 
 	return pkg, false
 }
 
-func addToRemotePackageCache(pkg string) {
-	remotePackageCache[pkg] = true
+func addToRemotePackageCache(pkg, v string) {
+	remotePackageCache[pkg] = v
 }
 
 func parseImportFromBody(ur *url.URL, r io.ReadCloser) (u string, err error) {
