add support for consul
diff --git a/viper.go b/viper.go
index b065a08..d4e7fdc 100644
--- a/viper.go
+++ b/viper.go
@@ -523,17 +523,6 @@
 }
 
 func getRemoteConfig(provider *remoteProvider) (map[string]interface{}, error) {
-	switch provider.provider {
-	case "etcd":
-		return getEtcdConfig(provider)
-	case "consul":
-		// not implemented yet
-
-	}
-	return config, nil
-}
-
-func getEtcdConfig(provider *remoteProvider) (map[string]interface{}, error) {
 	var cm crypt.ConfigManager
 	var err error
 
@@ -543,9 +532,17 @@
 		if err != nil {
 			return nil, err
 		}
-		cm, err = crypt.NewEtcdConfigManager([]string{provider.endpoint}, kr)
+		if provider.provider == "etcd" {
+			cm, err = crypt.NewEtcdConfigManager([]string{provider.endpoint}, kr)
+		} else {
+			cm, err = crypt.NewConsulConfigManager([]string{provider.endpoint}, kr)
+		}
 	} else {
-		cm, err = crypt.NewStandardEtcdConfigManager([]string{provider.endpoint})
+		if provider.provider == "etcd" {
+			cm, err = crypt.NewStandardEtcdConfigManager([]string{provider.endpoint})
+		} else {
+			cm, err = crypt.NewStandardConsulConfigManager([]string{provider.endpoint})
+		}
 	}
 	if err != nil {
 		return nil, err