diff --git a/action/cache.go b/action/cache.go
index 9896f21..b2ee07a 100644
--- a/action/cache.go
+++ b/action/cache.go
@@ -9,21 +9,15 @@
 
 // CacheClear clears the Glide cache
 func CacheClear() {
-	l, err := cache.Location()
-	if err != nil {
-		msg.Die("Unable to clear the cache: %s", err)
-	}
+	l := cache.Location()
 
-	err = os.RemoveAll(l)
+	err := os.RemoveAll(l)
 	if err != nil {
 		msg.Die("Unable to clear the cache: %s", err)
 	}
 
 	cache.SetupReset()
-	err = cache.Setup()
-	if err != nil {
-		msg.Die("Unable to clear the cache: %s", err)
-	}
+	cache.Setup()
 
 	msg.Info("Glide cache has been cleared.")
 }
diff --git a/action/config_wizard.go b/action/config_wizard.go
index ea627b4..e941399 100644
--- a/action/config_wizard.go
+++ b/action/config_wizard.go
@@ -37,10 +37,7 @@
 
 	conf := EnsureConfig()
 
-	err = cache.Setup()
-	if err != nil {
-		msg.Die("Problem setting up cache: %s", err)
-	}
+	cache.Setup()
 
 	msg.Info("Looking for dependencies to make suggestions on")
 	msg.Info("--> Scanning for dependencies not using version ranges")
@@ -252,11 +249,7 @@
 var createGitParseVersion = regexp.MustCompile(`(?m-s)(?:tags)/(\S+)$`)
 
 func wizardFindVersions(d *cfg.Dependency) {
-	l, err := cache.Location()
-	if err != nil {
-		msg.Debug("Problem detecting cache location: %s", err)
-		return
-	}
+	l := cache.Location()
 	remote := d.Remote()
 
 	key, err := cache.Key(remote)
diff --git a/cache/cache.go b/cache/cache.go
index 5a8538d..21f4edd 100644
--- a/cache/cache.go
+++ b/cache/cache.go
@@ -54,12 +54,12 @@
 var setupMutex sync.Mutex
 
 // Setup creates the cache location.
-func Setup() error {
+func Setup() {
 	setupMutex.Lock()
 	defer setupMutex.Unlock()
 
 	if isSetup {
-		return nil
+		return
 	}
 	msg.Debug("Setting up the cache directory")
 	pths := []string{
@@ -71,12 +71,11 @@
 	for _, l := range pths {
 		err := os.MkdirAll(filepath.Join(gpath.Home(), l), 0755)
 		if err != nil {
-			return err
+			msg.Die("Cache directory unavailable: %s", err)
 		}
 	}
 
 	isSetup = true
-	return nil
 }
 
 // SetupReset resets if setup has been completed. The next time setup is run
@@ -86,11 +85,11 @@
 }
 
 // Location returns the location of the cache.
-func Location() (string, error) {
+func Location() string {
 	p := filepath.Join(gpath.Home(), "cache")
-	err := Setup()
+	Setup()
 
-	return p, err
+	return p
 }
 
 // scpSyntaxRe matches the SCP-like addresses used to access repos over SSH.
@@ -153,10 +152,7 @@
 	if !Enabled {
 		return ErrCacheDisabled
 	}
-	location, err := Location()
-	if err != nil {
-		return err
-	}
+	location := Location()
 	data.LastUpdate = time.Now().String()
 	d, err := json.Marshal(data)
 	if err != nil {
@@ -185,10 +181,7 @@
 	if !Enabled {
 		return &RepoInfo{}, ErrCacheDisabled
 	}
-	location, err := Location()
-	if err != nil {
-		return &RepoInfo{}, err
-	}
+	location := Location()
 	c := &RepoInfo{}
 	p := filepath.Join(location, "info", key+".json")
 	f, err := ioutil.ReadFile(p)
diff --git a/repo/vcs.go b/repo/vcs.go
index e77e870..eacb1c0 100644
--- a/repo/vcs.go
+++ b/repo/vcs.go
@@ -368,10 +368,7 @@
 		loc := dep.Remote()
 		key, err := cp.Key(loc)
 		if err == nil {
-			location, err := cp.Location()
-			if err != nil {
-				return err
-			}
+			location := cp.Location()
 			d := filepath.Join(location, "src", key)
 
 			repo, err := dep.GetRepo(d)
