diff --git a/viper.go b/viper.go
index d075a95..89834b7 100644
--- a/viper.go
+++ b/viper.go
@@ -76,6 +76,8 @@
 	configType string
 	envPrefix  string
 
+	automaticEnvApplied bool
+
 	config   map[string]interface{}
 	override map[string]interface{}
 	defaults map[string]interface{}
@@ -136,10 +138,10 @@
 
 func (v *viper) mergeWithEnvPrefix(in string) string {
 	if v.envPrefix != "" {
-		return v.envPrefix + "_" + in
+		return strings.ToUpper(v.envPrefix + "_" + in)
 	}
 
-	return in
+	return strings.ToUpper(in)
 }
 
 // Return the config file used
@@ -370,7 +372,7 @@
 	key = strings.ToLower(input[0])
 
 	if len(input) == 1 {
-		envkey = strings.ToUpper(v.mergeWithEnvPrefix(key))
+		envkey = v.mergeWithEnvPrefix(key)
 	} else {
 		envkey = input[1]
 	}
@@ -406,6 +408,15 @@
 		return val
 	}
 
+	if v.automaticEnvApplied {
+		// even if it hasn't been registered, if automaticEnv is used,
+		// check any Get request
+		if val = os.Getenv(v.mergeWithEnvPrefix(key)); val != "" {
+			jww.TRACE.Println(key, "found in environment with val:", val)
+			return val
+		}
+	}
+
 	envkey, exists := v.env[key]
 	if exists {
 		jww.TRACE.Println(key, "registered as env var", envkey)
@@ -449,9 +460,7 @@
 // keys set in config, default & flags
 func AutomaticEnv() { v.AutomaticEnv() }
 func (v *viper) AutomaticEnv() {
-	for _, x := range v.AllKeys() {
-		v.BindEnv(x)
-	}
+	v.automaticEnvApplied = true
 }
 
 // Aliases provide another accessor for the same key.
