diff --git a/util.go b/util.go
index 6b34e14..fe6cb45 100644
--- a/util.go
+++ b/util.go
@@ -77,7 +77,7 @@
 
 // Check if File / Directory Exists
 func exists(path string) (bool, error) {
-	_, err := fs.Stat(path)
+	_, err := v.fs.Stat(path)
 	if err == nil {
 		return true, nil
 	}
diff --git a/viper.go b/viper.go
index e39a564..cdf2113 100644
--- a/viper.go
+++ b/viper.go
@@ -39,11 +39,9 @@
 )
 
 var v *Viper
-var fs afero.Fs
 
 func init() {
 	v = New()
-	fs = afero.NewOsFs()
 }
 
 type remoteConfigFactory interface {
@@ -134,6 +132,9 @@
 	// A set of paths to look for the config file in
 	configPaths []string
 
+	// The filesystem to read config from.
+	fs afero.Fs
+
 	// A set of remote providers to search for the configuration
 	remoteProviders []*defaultRemoteProvider
 
@@ -163,6 +164,7 @@
 	v := new(Viper)
 	v.keyDelim = "."
 	v.configName = "config"
+	v.fs = afero.NewOsFs()
 	v.config = make(map[string]interface{})
 	v.override = make(map[string]interface{})
 	v.defaults = make(map[string]interface{})
@@ -938,7 +940,7 @@
 		return UnsupportedConfigError(v.getConfigType())
 	}
 
-	file, err := afero.ReadFile(fs, v.getConfigFile())
+	file, err := afero.ReadFile(v.fs, v.getConfigFile())
 	if err != nil {
 		return err
 	}
@@ -956,7 +958,7 @@
 		return UnsupportedConfigError(v.getConfigType())
 	}
 
-	file, err := afero.ReadFile(fs, v.getConfigFile())
+	file, err := afero.ReadFile(v.fs, v.getConfigFile())
 	if err != nil {
 		return err
 	}
@@ -1210,6 +1212,12 @@
 	return m
 }
 
+// Se the filesystem to use to read configuration.
+func SetFs(fs afero.Fs) { v.SetFs(fs) }
+func (v *Viper) SetFs(fs afero.Fs) {
+	v.fs = fs
+}
+
 // Name for the config file.
 // Does not include extension.
 func SetConfigName(in string) { v.SetConfigName(in) }
