diff --git a/backend/alias/alias_internal_test.go b/backend/alias/alias_internal_test.go
index fa0956b6d..18312eb02 100644
--- a/backend/alias/alias_internal_test.go
+++ b/backend/alias/alias_internal_test.go
@@ -23,8 +23,8 @@ func prepare(t *testing.T, root string) {
 	configfile.Install()
 
 	// Configure the remote
-	config.FileSet(remoteName, "type", "alias")
-	config.FileSet(remoteName, "remote", root)
+	config.FileSetValue(remoteName, "type", "alias")
+	config.FileSetValue(remoteName, "remote", root)
 }
 
 func TestNewFS(t *testing.T) {
diff --git a/backend/cache/cache_internal_test.go b/backend/cache/cache_internal_test.go
index 0a1a39e46..e1baaa155 100644
--- a/backend/cache/cache_internal_test.go
+++ b/backend/cache/cache_internal_test.go
@@ -875,12 +875,12 @@ func (r *run) newCacheFs(t *testing.T, remote, id string, needRemote, purge bool
 	cacheRemote := remote
 	if !remoteExists {
 		localRemote := remote + "-local"
-		config.FileSet(localRemote, "type", "local")
-		config.FileSet(localRemote, "nounc", "true")
+		config.FileSetValue(localRemote, "type", "local")
+		config.FileSetValue(localRemote, "nounc", "true")
 		m.Set("type", "cache")
 		m.Set("remote", localRemote+":"+filepath.Join(os.TempDir(), localRemote))
 	} else {
-		remoteType := config.FileGet(remote, "type")
+		remoteType := config.GetValue(remote, "type")
 		if remoteType == "" {
 			t.Skipf("skipped due to invalid remote type for %v", remote)
 			return nil, nil
@@ -891,14 +891,14 @@ func (r *run) newCacheFs(t *testing.T, remote, id string, needRemote, purge bool
 				m.Set("password", cryptPassword1)
 				m.Set("password2", cryptPassword2)
 			}
-			remoteRemote := config.FileGet(remote, "remote")
+			remoteRemote := config.GetValue(remote, "remote")
 			if remoteRemote == "" {
 				t.Skipf("skipped due to invalid remote wrapper for %v", remote)
 				return nil, nil
 			}
 			remoteRemoteParts := strings.Split(remoteRemote, ":")
 			remoteWrapping := remoteRemoteParts[0]
-			remoteType := config.FileGet(remoteWrapping, "type")
+			remoteType := config.GetValue(remoteWrapping, "type")
 			if remoteType != "cache" {
 				t.Skipf("skipped due to invalid remote type for %v: '%v'", remoteWrapping, remoteType)
 				return nil, nil
diff --git a/fs/config/config.go b/fs/config/config.go
index ea4b5f2c3..3180f6d3b 100644
--- a/fs/config/config.go
+++ b/fs/config/config.go
@@ -121,7 +121,7 @@ var (
 
 func init() {
 	// Set the function pointers up in fs
-	fs.ConfigFileGet = FileGetFlag
+	fs.ConfigFileGet = FileGetValue
 	fs.ConfigFileSet = SetValueAndSave
 	fs.ConfigFileHasSection = func(section string) bool {
 		return LoadedData().HasSection(section)
@@ -351,6 +351,9 @@ func Data() Storage {
 	return data
 }
 
+// ErrorConfigFileNotFound is returned when the config file is not found
+var ErrorConfigFileNotFound = errors.New("config file not found")
+
 // LoadedData ensures the config file storage is loaded and returns it
 func LoadedData() Storage {
 	if !dataLoaded {
@@ -375,9 +378,6 @@ func LoadedData() Storage {
 	return data
 }
 
-// ErrorConfigFileNotFound is returned when the config file is not found
-var ErrorConfigFileNotFound = errors.New("config file not found")
-
 // SaveConfig calling function which saves configuration file.
 // if SaveConfig returns error trying again after sleep.
 func SaveConfig() {
@@ -394,25 +394,103 @@ func SaveConfig() {
 	fs.Errorf(nil, "Failed to save config after %d tries: %v", ci.LowLevelRetries, err)
 }
 
+// FileSections returns the sections in the config file
+func FileSections() []string {
+	return LoadedData().GetSectionList()
+}
+
+// FileGetValue gets the config key under section returning the
+// the value and true if found and or ("", false) otherwise
+func FileGetValue(section, key string) (string, bool) {
+	return LoadedData().GetValue(section, key)
+}
+
+// FileSetValue sets the key in section to value.
+// It doesn't save the config file.
+func FileSetValue(section, key, value string) {
+	LoadedData().SetValue(section, key, value)
+}
+
+// FileDeleteKey deletes the config key in the config file.
+// It returns true if the key was deleted,
+// or returns false if the section or key didn't exist.
+func FileDeleteKey(section, key string) bool {
+	return LoadedData().DeleteKey(section, key)
+}
+
+// GetValue gets the value for a config key from environment
+// or config file under section returning the default if not set.
+//
+// Emulates the preference documented and normally used by rclone via
+// configmap, which means environment variables before config file.
+func GetValue(remote, key string) string {
+	envKey := fs.ConfigToEnv(remote, key)
+	value, found := os.LookupEnv(envKey)
+	if found {
+		return value
+	}
+	value, _ = LoadedData().GetValue(remote, key)
+	return value
+}
+
 // SetValueAndSave sets the key to the value and saves just that
 // value in the config file.  It loads the old config file in from
 // disk first and overwrites the given value only.
-func SetValueAndSave(name, key, value string) error {
+func SetValueAndSave(remote, key, value string) error {
 	// Set the value in config in case we fail to reload it
-	LoadedData().SetValue(name, key, value)
+	FileSetValue(remote, key, value)
 	// Save it again
 	SaveConfig()
 	return nil
 }
 
-// getWithDefault gets key out of section name returning defaultValue if not
-// found.
-func getWithDefault(name, key, defaultValue string) string {
-	value, found := LoadedData().GetValue(name, key)
-	if !found {
-		return defaultValue
+// Remote defines a remote with a name, type and source
+type Remote struct {
+	Name   string `json:"name"`
+	Type   string `json:"type"`
+	Source string `json:"source"`
+}
+
+var remoteEnvRe = regexp.MustCompile(`^RCLONE_CONFIG_(.+?)_TYPE=(.+)$`)
+
+// GetRemotes returns the list of remotes defined in environment and config file.
+//
+// Emulates the preference documented and normally used by rclone via
+// configmap, which means environment variables before config file.
+func GetRemotes() []Remote {
+	var remotes []Remote
+	for _, item := range os.Environ() {
+		matches := remoteEnvRe.FindStringSubmatch(item)
+		if len(matches) == 3 {
+			remotes = append(remotes, Remote{
+				Name:   strings.ToLower(matches[1]),
+				Type:   strings.ToLower(matches[2]),
+				Source: "environment",
+			})
+		}
 	}
-	return value
+	remoteExists := func(name string) bool {
+		for _, remote := range remotes {
+			if name == remote.Name {
+				return true
+			}
+		}
+		return false
+	}
+	sections := LoadedData().GetSectionList()
+	for _, section := range sections {
+		if !remoteExists(section) {
+			typeValue, found := LoadedData().GetValue(section, "type")
+			if found {
+				remotes = append(remotes, Remote{
+					Name:   section,
+					Type:   typeValue,
+					Source: "file",
+				})
+			}
+		}
+	}
+	return remotes
 }
 
 // GetRemoteNames returns the names of remotes defined in environment and config file.
@@ -459,7 +537,7 @@ func updateRemote(ctx context.Context, name string, keyValues rc.Params, opt Upd
 		ctx = suppressConfirm(ctx)
 	}
 
-	fsType := FileGet(name, "type")
+	fsType := GetValue(name, "type")
 	if fsType == "" {
 		return nil, errors.New("couldn't find type field in config")
 	}
@@ -611,101 +689,11 @@ func fsOption() *fs.Option {
 	return o
 }
 
-// FileGetFlag gets the config key under section returning the
-// the value and true if found and or ("", false) otherwise
-func FileGetFlag(section, key string) (string, bool) {
-	return LoadedData().GetValue(section, key)
-}
-
-// FileGet gets the config key under section returning the default if not set.
-//
-// It looks up defaults in the environment if they are present
-func FileGet(section, key string) string {
-	var defaultVal string
-	envKey := fs.ConfigToEnv(section, key)
-	newValue, found := os.LookupEnv(envKey)
-	if found {
-		defaultVal = newValue
-	}
-	return getWithDefault(section, key, defaultVal)
-}
-
-// FileSet sets the key in section to value.  It doesn't save
-// the config file.
-func FileSet(section, key, value string) {
-	if value != "" {
-		LoadedData().SetValue(section, key, value)
-	} else {
-		FileDeleteKey(section, key)
-	}
-}
-
-// FileDeleteKey deletes the config key in the config file.
-// It returns true if the key was deleted,
-// or returns false if the section or key didn't exist.
-func FileDeleteKey(section, key string) bool {
-	return LoadedData().DeleteKey(section, key)
-}
-
-// FileSections returns the sections in the config file
-func FileSections() []string {
-	return LoadedData().GetSectionList()
-}
-
-// Remote defines a remote with a name, type and source
-type Remote struct {
-	Name   string `json:"name"`
-	Type   string `json:"type"`
-	Source string `json:"source"`
-}
-
-var remoteEnvRe = regexp.MustCompile(`^RCLONE_CONFIG_(.+?)_TYPE=(.+)$`)
-
-// GetRemotes returns the list of remotes defined in environment and config file.
-//
-// Emulates the preference documented and normally used by rclone via configmap,
-// which means environment variables before config file.
-func GetRemotes() []Remote {
-	var remotes []Remote
-	for _, item := range os.Environ() {
-		matches := remoteEnvRe.FindStringSubmatch(item)
-		if len(matches) == 3 {
-			remotes = append(remotes, Remote{
-				Name:   strings.ToLower(matches[1]),
-				Type:   strings.ToLower(matches[2]),
-				Source: "environment",
-			})
-		}
-	}
-	remoteExists := func(name string) bool {
-		for _, remote := range remotes {
-			if name == remote.Name {
-				return true
-			}
-		}
-		return false
-	}
-	sections := LoadedData().GetSectionList()
-	for _, section := range sections {
-		if !remoteExists(section) {
-			typeValue, found := LoadedData().GetValue(section, "type")
-			if found {
-				remotes = append(remotes, Remote{
-					Name:   section,
-					Type:   typeValue,
-					Source: "file",
-				})
-			}
-		}
-	}
-	return remotes
-}
-
 // DumpRcRemote dumps the config for a single remote
 func DumpRcRemote(name string) (dump rc.Params) {
 	params := rc.Params{}
 	for _, key := range LoadedData().GetKeyList(name) {
-		params[key] = FileGet(name, key)
+		params[key] = GetValue(name, key)
 	}
 	return params
 }
diff --git a/fs/config/rc_test.go b/fs/config/rc_test.go
index 891b9bcbc..aeed3f513 100644
--- a/fs/config/rc_test.go
+++ b/fs/config/rc_test.go
@@ -33,8 +33,8 @@ func TestRc(t *testing.T) {
 	out, err := call.Fn(ctx, in)
 	require.NoError(t, err)
 	require.Nil(t, out)
-	assert.Equal(t, "local", config.FileGet(testName, "type"))
-	assert.Equal(t, "sausage", config.FileGet(testName, "test_key"))
+	assert.Equal(t, "local", config.GetValue(testName, "type"))
+	assert.Equal(t, "sausage", config.GetValue(testName, "test_key"))
 
 	// The sub tests rely on the remote created above but they can
 	// all be run independently
@@ -102,9 +102,9 @@ func TestRc(t *testing.T) {
 		require.NoError(t, err)
 		assert.Nil(t, out)
 
-		assert.Equal(t, "local", config.FileGet(testName, "type"))
-		assert.Equal(t, "rutabaga", config.FileGet(testName, "test_key"))
-		assert.Equal(t, "cabbage", config.FileGet(testName, "test_key2"))
+		assert.Equal(t, "local", config.GetValue(testName, "type"))
+		assert.Equal(t, "rutabaga", config.GetValue(testName, "test_key"))
+		assert.Equal(t, "cabbage", config.GetValue(testName, "test_key2"))
 	})
 
 	t.Run("Password", func(t *testing.T) {
@@ -122,9 +122,9 @@ func TestRc(t *testing.T) {
 		require.NoError(t, err)
 		assert.Nil(t, out)
 
-		assert.Equal(t, "local", config.FileGet(testName, "type"))
-		assert.Equal(t, "rutabaga", obscure.MustReveal(config.FileGet(testName, "test_key")))
-		assert.Equal(t, pw2, obscure.MustReveal(config.FileGet(testName, "test_key2")))
+		assert.Equal(t, "local", config.GetValue(testName, "type"))
+		assert.Equal(t, "rutabaga", obscure.MustReveal(config.GetValue(testName, "test_key")))
+		assert.Equal(t, pw2, obscure.MustReveal(config.GetValue(testName, "test_key2")))
 	})
 
 	// Delete the test remote
@@ -136,8 +136,8 @@ func TestRc(t *testing.T) {
 	out, err = call.Fn(context.Background(), in)
 	require.NoError(t, err)
 	assert.Nil(t, out)
-	assert.Equal(t, "", config.FileGet(testName, "type"))
-	assert.Equal(t, "", config.FileGet(testName, "test_key"))
+	assert.Equal(t, "", config.GetValue(testName, "type"))
+	assert.Equal(t, "", config.GetValue(testName, "test_key"))
 }
 
 func TestRcProviders(t *testing.T) {
diff --git a/fs/config/ui.go b/fs/config/ui.go
index 7c99871b2..ff8acda0f 100644
--- a/fs/config/ui.go
+++ b/fs/config/ui.go
@@ -280,7 +280,7 @@ func ShowRemotes() {
 	fmt.Printf("%-20s %s\n", "Name", "Type")
 	fmt.Printf("%-20s %s\n", "====", "====")
 	for _, remote := range remotes {
-		fmt.Printf("%-20s %s\n", remote, FileGet(remote, "type"))
+		fmt.Printf("%-20s %s\n", remote, GetValue(remote, "type"))
 	}
 }
 
@@ -295,7 +295,7 @@ func ChooseRemote() string {
 // mustFindByName finds the RegInfo for the remote name passed in or
 // exits with a fatal error.
 func mustFindByName(name string) *fs.RegInfo {
-	fsType := FileGet(name, "type")
+	fsType := GetValue(name, "type")
 	if fsType == "" {
 		log.Fatalf("Couldn't find type of fs for %q", name)
 	}
@@ -305,7 +305,7 @@ func mustFindByName(name string) *fs.RegInfo {
 // findByName finds the RegInfo for the remote name passed in or
 // returns an error
 func findByName(name string) (*fs.RegInfo, error) {
-	fsType := FileGet(name, "type")
+	fsType := GetValue(name, "type")
 	if fsType == "" {
 		return nil, fmt.Errorf("couldn't find type of fs for %q", name)
 	}
@@ -333,7 +333,7 @@ func printRemoteOptions(name string, prefix string, sep string, redacted bool) {
 				}
 			}
 		}
-		value := FileGet(name, key)
+		value := GetValue(name, key)
 		if redacted && (isSensitive || isPassword) && value != "" {
 			fmt.Printf("%s%s%sXXX\n", prefix, key, sep)
 		} else if isPassword && value != "" {
@@ -613,7 +613,7 @@ func copyRemote(name string) string {
 	newName := NewRemoteName()
 	// Copy the keys
 	for _, key := range LoadedData().GetKeyList(name) {
-		value := getWithDefault(name, key, "")
+		value, _ := FileGetValue(name, key)
 		LoadedData().SetValue(newName, key, value)
 	}
 	return newName
diff --git a/fs/config/ui_test.go b/fs/config/ui_test.go
index 172921c9b..f24f2891f 100644
--- a/fs/config/ui_test.go
+++ b/fs/config/ui_test.go
@@ -110,9 +110,9 @@ func TestCRUD(t *testing.T) {
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
 	assert.Equal(t, []string{"test"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("test", "type"))
-	assert.Equal(t, "true", config.FileGet("test", "bool"))
-	assert.Equal(t, "secret", obscure.MustReveal(config.FileGet("test", "pass")))
+	assert.Equal(t, "config_test_remote", config.GetValue("test", "type"))
+	assert.Equal(t, "true", config.GetValue("test", "bool"))
+	assert.Equal(t, "secret", obscure.MustReveal(config.GetValue("test", "pass")))
 
 	// normal rename, test → asdf
 	config.ReadLine = makeReadLine([]string{
@@ -123,9 +123,9 @@ func TestCRUD(t *testing.T) {
 	config.RenameRemote("test")
 
 	assert.Equal(t, []string{"asdf"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("asdf", "type"))
-	assert.Equal(t, "true", config.FileGet("asdf", "bool"))
-	assert.Equal(t, "secret", obscure.MustReveal(config.FileGet("asdf", "pass")))
+	assert.Equal(t, "config_test_remote", config.GetValue("asdf", "type"))
+	assert.Equal(t, "true", config.GetValue("asdf", "bool"))
+	assert.Equal(t, "secret", obscure.MustReveal(config.GetValue("asdf", "pass")))
 
 	// delete remote
 	config.DeleteRemote("asdf")
@@ -152,8 +152,8 @@ func TestChooseOption(t *testing.T) {
 	}
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
-	assert.Equal(t, "", config.FileGet("test", "bool")) // this is the default now
-	assert.Equal(t, "not very random password", obscure.MustReveal(config.FileGet("test", "pass")))
+	assert.Equal(t, "", config.GetValue("test", "bool")) // this is the default now
+	assert.Equal(t, "not very random password", obscure.MustReveal(config.GetValue("test", "pass")))
 
 	// script for creating remote
 	config.ReadLine = makeReadLine([]string{
@@ -164,8 +164,8 @@ func TestChooseOption(t *testing.T) {
 	})
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
-	assert.Equal(t, "true", config.FileGet("test", "bool"))
-	assert.Equal(t, "", config.FileGet("test", "pass"))
+	assert.Equal(t, "true", config.GetValue("test", "bool"))
+	assert.Equal(t, "", config.GetValue("test", "pass"))
 }
 
 func TestNewRemoteName(t *testing.T) {
@@ -212,9 +212,9 @@ func TestCreateUpdatePasswordRemote(t *testing.T) {
 				require.NoError(t, err)
 
 				assert.Equal(t, []string{"test2"}, config.Data().GetSectionList())
-				assert.Equal(t, "config_test_remote", config.FileGet("test2", "type"))
-				assert.Equal(t, "true", config.FileGet("test2", "bool"))
-				gotPw := config.FileGet("test2", "pass")
+				assert.Equal(t, "config_test_remote", config.GetValue("test2", "type"))
+				assert.Equal(t, "true", config.GetValue("test2", "bool"))
+				gotPw := config.GetValue("test2", "pass")
 				if !noObscure {
 					gotPw = obscure.MustReveal(gotPw)
 				}
@@ -229,9 +229,9 @@ func TestCreateUpdatePasswordRemote(t *testing.T) {
 				require.NoError(t, err)
 
 				assert.Equal(t, []string{"test2"}, config.Data().GetSectionList())
-				assert.Equal(t, "config_test_remote", config.FileGet("test2", "type"))
-				assert.Equal(t, "false", config.FileGet("test2", "bool"))
-				gotPw = config.FileGet("test2", "pass")
+				assert.Equal(t, "config_test_remote", config.GetValue("test2", "type"))
+				assert.Equal(t, "false", config.GetValue("test2", "bool"))
+				gotPw = config.GetValue("test2", "pass")
 				if doObscure {
 					gotPw = obscure.MustReveal(gotPw)
 				}
@@ -242,9 +242,9 @@ func TestCreateUpdatePasswordRemote(t *testing.T) {
 				}))
 
 				assert.Equal(t, []string{"test2"}, config.Data().GetSectionList())
-				assert.Equal(t, "config_test_remote", config.FileGet("test2", "type"))
-				assert.Equal(t, "false", config.FileGet("test2", "bool"))
-				assert.Equal(t, "potato3", obscure.MustReveal(config.FileGet("test2", "pass")))
+				assert.Equal(t, "config_test_remote", config.GetValue("test2", "type"))
+				assert.Equal(t, "false", config.GetValue("test2", "bool"))
+				assert.Equal(t, "potato3", obscure.MustReveal(config.GetValue("test2", "pass")))
 			})
 		}
 	}
@@ -280,10 +280,10 @@ func TestDefaultRequired(t *testing.T) {
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
 	assert.Equal(t, []string{"test"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("test", "type"))
-	assert.Equal(t, "111", config.FileGet("test", "string_required"))
-	assert.Equal(t, "222", config.FileGet("test", "string_default"))
-	assert.Equal(t, "333", config.FileGet("test", "string_required_default"))
+	assert.Equal(t, "config_test_remote", config.GetValue("test", "type"))
+	assert.Equal(t, "111", config.GetValue("test", "string_required"))
+	assert.Equal(t, "222", config.GetValue("test", "string_default"))
+	assert.Equal(t, "333", config.GetValue("test", "string_required_default"))
 
 	// delete remote
 	config.DeleteRemote("test")
@@ -301,10 +301,10 @@ func TestDefaultRequired(t *testing.T) {
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
 	assert.Equal(t, []string{"test"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("test", "type"))
-	assert.Equal(t, "111", config.FileGet("test", "string_required"))
-	assert.Equal(t, "", config.FileGet("test", "string_default"))
-	assert.Equal(t, "", config.FileGet("test", "string_required_default"))
+	assert.Equal(t, "config_test_remote", config.GetValue("test", "type"))
+	assert.Equal(t, "111", config.GetValue("test", "string_required"))
+	assert.Equal(t, "", config.GetValue("test", "string_default"))
+	assert.Equal(t, "", config.GetValue("test", "string_required_default"))
 }
 
 func TestMultipleChoice(t *testing.T) {
@@ -383,11 +383,11 @@ func TestMultipleChoice(t *testing.T) {
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
 	assert.Equal(t, []string{"test"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("test", "type"))
-	assert.Equal(t, "CCC", config.FileGet("test", "multiple_choice"))
-	assert.Equal(t, "CCC", config.FileGet("test", "multiple_choice_required"))
-	assert.Equal(t, "CCC", config.FileGet("test", "multiple_choice_default"))
-	assert.Equal(t, "CCC", config.FileGet("test", "multiple_choice_required_default"))
+	assert.Equal(t, "config_test_remote", config.GetValue("test", "type"))
+	assert.Equal(t, "CCC", config.GetValue("test", "multiple_choice"))
+	assert.Equal(t, "CCC", config.GetValue("test", "multiple_choice_required"))
+	assert.Equal(t, "CCC", config.GetValue("test", "multiple_choice_default"))
+	assert.Equal(t, "CCC", config.GetValue("test", "multiple_choice_required_default"))
 
 	// delete remote
 	config.DeleteRemote("test")
@@ -405,11 +405,11 @@ func TestMultipleChoice(t *testing.T) {
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
 	assert.Equal(t, []string{"test"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("test", "type"))
-	assert.Equal(t, "XXX", config.FileGet("test", "multiple_choice"))
-	assert.Equal(t, "XXX", config.FileGet("test", "multiple_choice_required"))
-	assert.Equal(t, "XXX", config.FileGet("test", "multiple_choice_default"))
-	assert.Equal(t, "XXX", config.FileGet("test", "multiple_choice_required_default"))
+	assert.Equal(t, "config_test_remote", config.GetValue("test", "type"))
+	assert.Equal(t, "XXX", config.GetValue("test", "multiple_choice"))
+	assert.Equal(t, "XXX", config.GetValue("test", "multiple_choice_required"))
+	assert.Equal(t, "XXX", config.GetValue("test", "multiple_choice_default"))
+	assert.Equal(t, "XXX", config.GetValue("test", "multiple_choice_required_default"))
 
 	// delete remote
 	config.DeleteRemote("test")
@@ -428,11 +428,11 @@ func TestMultipleChoice(t *testing.T) {
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
 	assert.Equal(t, []string{"test"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("test", "type"))
-	assert.Equal(t, "", config.FileGet("test", "multiple_choice"))
-	assert.Equal(t, "XXX", config.FileGet("test", "multiple_choice_required"))
-	assert.Equal(t, "", config.FileGet("test", "multiple_choice_default"))
-	assert.Equal(t, "", config.FileGet("test", "multiple_choice_required_default"))
+	assert.Equal(t, "config_test_remote", config.GetValue("test", "type"))
+	assert.Equal(t, "", config.GetValue("test", "multiple_choice"))
+	assert.Equal(t, "XXX", config.GetValue("test", "multiple_choice_required"))
+	assert.Equal(t, "", config.GetValue("test", "multiple_choice_default"))
+	assert.Equal(t, "", config.GetValue("test", "multiple_choice_required_default"))
 }
 
 func TestMultipleChoiceExclusive(t *testing.T) {
@@ -483,9 +483,9 @@ func TestMultipleChoiceExclusive(t *testing.T) {
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
 	assert.Equal(t, []string{"test"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("test", "type"))
-	assert.Equal(t, "", config.FileGet("test", "multiple_choice_exclusive"))
-	assert.Equal(t, "", config.FileGet("test", "multiple_choice_exclusive_default"))
+	assert.Equal(t, "config_test_remote", config.GetValue("test", "type"))
+	assert.Equal(t, "", config.GetValue("test", "multiple_choice_exclusive"))
+	assert.Equal(t, "", config.GetValue("test", "multiple_choice_exclusive_default"))
 }
 
 func TestMultipleChoiceExclusiveRequired(t *testing.T) {
@@ -539,7 +539,7 @@ func TestMultipleChoiceExclusiveRequired(t *testing.T) {
 	require.NoError(t, config.NewRemote(ctx, "test"))
 
 	assert.Equal(t, []string{"test"}, config.Data().GetSectionList())
-	assert.Equal(t, "config_test_remote", config.FileGet("test", "type"))
-	assert.Equal(t, "CCC", config.FileGet("test", "multiple_choice_exclusive_required"))
-	assert.Equal(t, "", config.FileGet("test", "multiple_choice_exclusive_required_default"))
+	assert.Equal(t, "config_test_remote", config.GetValue("test", "type"))
+	assert.Equal(t, "CCC", config.GetValue("test", "multiple_choice_exclusive_required"))
+	assert.Equal(t, "", config.GetValue("test", "multiple_choice_exclusive_required_default"))
 }
diff --git a/fstest/fstests/fstests.go b/fstest/fstests/fstests.go
index 06e6efb72..be43a015a 100644
--- a/fstest/fstests/fstests.go
+++ b/fstest/fstests/fstests.go
@@ -429,7 +429,7 @@ func Run(t *testing.T, opt *Opt) {
 
 	// Set extra config if supplied
 	for _, item := range opt.ExtraConfig {
-		config.FileSet(item.Name, item.Key, item.Value)
+		config.FileSetValue(item.Name, item.Key, item.Value)
 	}
 	if *fstest.RemoteName != "" {
 		remoteName = *fstest.RemoteName