diff --git a/example_test.go b/example_test.go
index 0677e595..4794e4aa 100644
--- a/example_test.go
+++ b/example_test.go
@@ -121,18 +121,6 @@ x = {
 	// person: {Name:kcl Age:101}
 }
 
-func ExampleRun_getField() {
-	// run kcl.yaml
-	x, err := kcl.Run("./testdata/app0/kcl.yaml")
-	assert(err == nil, err)
-
-	// print deploy_topology[1].zone
-	fmt.Println(x.First().Get("deploy_topology.1.zone"))
-
-	// Output:
-	// R000A
-}
-
 func Example() {
 	const k_code = `
 name = "kcl"
diff --git a/kclvm_test.go b/kclvm_test.go
index dec28ca6..661832c9 100644
--- a/kclvm_test.go
+++ b/kclvm_test.go
@@ -11,7 +11,6 @@ import (
 	"sort"
 	"strconv"
 	"strings"
-	"sync"
 	"testing"
 
 	assert2 "github.com/stretchr/testify/assert"
@@ -37,36 +36,6 @@ func TestMain(m *testing.M) {
 	os.Exit(m.Run())
 }
 
-func TestRunFiles(t *testing.T) {
-	_, err := kcl.RunFiles([]string{"./testdata/app0/kcl.yaml"})
-	if err != nil {
-		t.Fatal(err)
-	}
-	_, err = kcl.RunFiles([]string{"./testdata/app0/kcl.yaml"})
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	chErr := make(chan error, 3)
-
-	var wg sync.WaitGroup
-	for i := 0; i < cap(chErr); i++ {
-		wg.Add(1)
-		go func() {
-			defer wg.Done()
-			_, e := kcl.RunFiles([]string{"./testdata/app0/kcl.yaml"})
-			chErr <- e
-		}()
-	}
-	wg.Wait()
-
-	for i := 0; i < cap(chErr); i++ {
-		if e := <-chErr; e != nil {
-			t.Fatal(e)
-		}
-	}
-}
-
 func TestStreamResult(t *testing.T) {
 	file, err := filepath.Abs("./testdata/stream/one_stream.k")
 	if err != nil {
diff --git a/pkg/kcl/api_test.go b/pkg/kcl/api_test.go
index cb1324f8..03d59a30 100644
--- a/pkg/kcl/api_test.go
+++ b/pkg/kcl/api_test.go
@@ -34,12 +34,6 @@ func TestKCLResultInt(t *testing.T) {
 	tAssert(t, *m == 1)
 }
 
-func TestRun_kcl_yaml(t *testing.T) {
-	const s = "../../testdata/app0/kcl.yaml"
-	_, err := RunFiles([]string{s})
-	tAssert(t, err == nil, err)
-}
-
 func TestRun(t *testing.T) {
 	const k_code = `
 name = "kcl"
diff --git a/pkg/kcl/opt.go b/pkg/kcl/opt.go
index 362bb22e..c81c152e 100644
--- a/pkg/kcl/opt.go
+++ b/pkg/kcl/opt.go
@@ -44,16 +44,7 @@ func (p *Option) GetLogger() io.Writer {
 func ParseArgs(pathList []string, opts ...Option) (Option, error) {
 	var tmpOptList []Option
 	for _, s := range pathList {
-		switch {
-		case strings.HasSuffix(s, ".k"):
-			tmpOptList = append(tmpOptList, WithKFilenames(s))
-		case strings.HasSuffix(s, ".yaml") || strings.HasSuffix(s, ".yml"):
-			tmpOptList = append(tmpOptList, WithSettings(s))
-		case isDir(s):
-			tmpOptList = append(tmpOptList, WithWorkDir(s))
-		default:
-			tmpOptList = append(tmpOptList, WithKFilenames(s))
-		}
+		tmpOptList = append(tmpOptList, WithKFilenames(s))
 	}
 
 	args := NewOption().Merge(opts...).Merge(tmpOptList...)
diff --git a/pkg/settings/utils_settings_yaml.go b/pkg/settings/utils_settings_yaml.go
index b4467329..53ae057e 100644
--- a/pkg/settings/utils_settings_yaml.go
+++ b/pkg/settings/utils_settings_yaml.go
@@ -88,8 +88,6 @@ func LoadFile(filename string, src interface{}) (f *SettingsFile, err error) {
 
 func (settings *SettingsFile) To_ExecProgram_Args() *gpyrpc.ExecProgram_Args {
 	args := &gpyrpc.ExecProgram_Args{
-		WorkDir: filepath.Dir(settings.Filename),
-
 		KFilenameList: []string{},
 		KCodeList:     []string{},
 
@@ -106,6 +104,7 @@ func (settings *SettingsFile) To_ExecProgram_Args() *gpyrpc.ExecProgram_Args {
 		SortKeys:              settings.Config.SortKeys,
 		ShowHidden:            settings.Config.ShowHidden,
 		IncludeSchemaTypePath: settings.Config.IncludeSchemaTypePath,
+		PathSelector:          settings.Config.PathSelector,
 	}
 	if settings.Config.Debug {
 		args.Debug = 1