diff --git a/cmd/govulncheck/main.go b/cmd/govulncheck/main.go
index 3ece7fa..4a567d1 100644
--- a/cmd/govulncheck/main.go
+++ b/cmd/govulncheck/main.go
@@ -76,7 +76,7 @@
 	}
 
 	ctx := context.Background()
-	_, err := govulncheck.Run(ctx, govulncheck.Config{
+	_, err := govulncheck.LegacyRun(ctx, govulncheck.LegacyConfig{
 		AnalysisType: mode,
 		OutputType:   outputType,
 		Patterns:     patterns,
diff --git a/exp/govulncheck/govulncheck.go b/exp/govulncheck/govulncheck.go
index ed52a93..12fa6b6 100644
--- a/exp/govulncheck/govulncheck.go
+++ b/exp/govulncheck/govulncheck.go
@@ -12,11 +12,11 @@
 )
 
 // Config is the configuration for Main.
-type Config = govulncheck.Config
+type Config = govulncheck.LegacyConfig
 
 // Main is the main function for the govulncheck command line tool.
 func Main(cfg Config) error {
 	ctx := context.Background()
-	_, err := govulncheck.Run(ctx, cfg)
+	_, err := govulncheck.LegacyRun(ctx, cfg)
 	return err
 }
diff --git a/internal/govulncheck/config.go b/internal/govulncheck/config.go
index 709b396..424f205 100644
--- a/internal/govulncheck/config.go
+++ b/internal/govulncheck/config.go
@@ -37,8 +37,8 @@
 	vulndbHost  = "https://vuln.go.dev"
 )
 
-// Config is the configuration for Main.
-type Config struct {
+// LegacyConfig is the configuration for Main.
+type LegacyConfig struct {
 	// AnalysisType specifies the vulncheck analysis type.
 	AnalysisType string
 
diff --git a/internal/govulncheck/run.go b/internal/govulncheck/legacy_run.go
similarity index 98%
rename from internal/govulncheck/run.go
rename to internal/govulncheck/legacy_run.go
index 813a210..52292fb 100644
--- a/internal/govulncheck/run.go
+++ b/internal/govulncheck/legacy_run.go
@@ -20,8 +20,8 @@
 	"golang.org/x/vuln/vulncheck"
 )
 
-// Run is the main function for the govulncheck command line tool.
-func Run(ctx context.Context, cfg Config) (*Result, error) {
+// LegacyRun is the main function for the govulncheck command line tool.
+func LegacyRun(ctx context.Context, cfg LegacyConfig) (*Result, error) {
 	dbs := []string{vulndbHost}
 	if db := os.Getenv(envGOVULNDB); db != "" {
 		dbs = strings.Split(db, ",")
diff --git a/internal/govulncheck/source.go b/internal/govulncheck/source.go
index 846f559..7210856 100644
--- a/internal/govulncheck/source.go
+++ b/internal/govulncheck/source.go
@@ -31,7 +31,7 @@
 // the cfg mode flags that vulncheck needs for analysis.
 // If the packages contain errors, a PackageError is returned containing a list of the errors,
 // along with the packages themselves.
-func loadPackages(cfg Config) ([]*vulncheck.Package, error) {
+func loadPackages(cfg LegacyConfig) ([]*vulncheck.Package, error) {
 	patterns := cfg.Patterns
 	cfg.SourceLoadConfig.Mode |= packages.NeedName | packages.NeedImports | packages.NeedTypes |
 		packages.NeedSyntax | packages.NeedTypesInfo | packages.NeedDeps |
diff --git a/internal/govulncheck/summary.go b/internal/govulncheck/summary.go
index 7102cff..0cd8d2b 100644
--- a/internal/govulncheck/summary.go
+++ b/internal/govulncheck/summary.go
@@ -9,19 +9,19 @@
 	"golang.org/x/vuln/vulncheck"
 )
 
-// Summary is the govulncheck result.
+// LegacySummary is the govulncheck result.
 //
-// TODO(https://go.dev/issue/56042): replace Summary with Result
-type Summary struct {
+// TODO(https://go.dev/issue/56042): replace LegacySummary with Result
+type LegacySummary struct {
 	// Vulnerabilities affecting the analysis target binary or source code.
-	Affecting []Vuln
+	Affecting []LegacyVuln
 	// Vulnerabilities that may be imported but the vulnerable symbols are
 	// not called. For binary analysis, this will be always empty.
-	NonAffecting []Vuln
+	NonAffecting []LegacyVuln
 }
 
-// Vuln represents a vulnerability relevant to a (module, package).
-type Vuln struct {
+// LegacyVuln represents a vulnerability relevant to a (module, package).
+type LegacyVuln struct {
 	OSV     *osv.Entry
 	PkgPath string // Package path.
 	ModPath string // Module path.
@@ -30,33 +30,33 @@
 	// Trace contains a call stack for each affecting symbol.
 	// For vulnerabilities found from binary analysis, and vulnerabilities
 	// that are reported as Unaffecting ones, this will be always empty.
-	Trace []Trace
+	Trace []LegacyTrace
 }
 
-// Trace represents a sample trace for a vulnerable symbol.
-type Trace struct {
-	Symbol string       // Name of the detected vulnerable function or method.
-	Desc   string       // One-line description of the callstack.
-	Stack  []StackEntry // Call stack.
-	Seen   int          // Number of similar call stacks.
+// LegacyTrace represents a sample trace for a vulnerable symbol.
+type LegacyTrace struct {
+	Symbol string             // Name of the detected vulnerable function or method.
+	Desc   string             // One-line description of the callstack.
+	Stack  []LegacyStackEntry // Call stack.
+	Seen   int                // Number of similar call stacks.
 }
 
-// StackEntry represents a call stack entry.
-type StackEntry struct {
+// LegacyStackEntry represents a call stack entry.
+type LegacyStackEntry struct {
 	FuncName string // Function name is the function name, adjusted to remove pointer annotation.
 	CallSite string // Position of the call/reference site. It is one of the formats token.Pos.String() returns or empty if unknown.
 }
 
 // summary summarize the analysis result.
-func summary(ci *callInfo, unaffected []*vulncheck.Vuln) Summary {
-	var affecting, unaffecting []Vuln
+func summary(ci *callInfo, unaffected []*vulncheck.Vuln) LegacySummary {
+	var affecting, unaffecting []LegacyVuln
 	for _, vg := range ci.vulnGroups {
 		// All the vulns in vg have the same PkgPath, ModPath and OSV.
 		// All have a non-zero CallSink.
 		v0 := vg[0]
 		stacks := summarizeCallStacks(vg, ci)
 
-		affecting = append(affecting, Vuln{
+		affecting = append(affecting, LegacyVuln{
 			OSV:     vg[0].OSV,
 			PkgPath: v0.PkgPath,
 			ModPath: v0.ModPath,
@@ -66,7 +66,7 @@
 		})
 	}
 	for _, vuln := range unaffected {
-		unaffecting = append(unaffecting, Vuln{
+		unaffecting = append(unaffecting, LegacyVuln{
 			OSV:     vuln.OSV,
 			PkgPath: vuln.PkgPath,
 			ModPath: vuln.ModPath,
@@ -74,28 +74,28 @@
 			FixedIn: fixedVersion(vuln.ModPath, vuln.OSV.Affected),
 		})
 	}
-	return Summary{
+	return LegacySummary{
 		Affecting:    affecting,
 		NonAffecting: unaffecting,
 	}
 }
 
-func summarizeCallStacks(vg []*vulncheck.Vuln, ci *callInfo) []Trace {
-	cs := make([]Trace, 0, len(vg))
+func summarizeCallStacks(vg []*vulncheck.Vuln, ci *callInfo) []LegacyTrace {
+	cs := make([]LegacyTrace, 0, len(vg))
 	// report one full call stack for each vuln.
 	for _, v := range vg {
 		css := ci.callStacks[v]
 		if len(css) == 0 {
 			continue
 		}
-		stack := make([]StackEntry, 0, len(css))
+		stack := make([]LegacyStackEntry, 0, len(css))
 		for _, e := range css[0] {
-			stack = append(stack, StackEntry{
+			stack = append(stack, LegacyStackEntry{
 				FuncName: FuncName(e.Function),
 				CallSite: FuncPos(e.Call),
 			})
 		}
-		cs = append(cs, Trace{
+		cs = append(cs, LegacyTrace{
 			Symbol: v.Symbol,
 			Desc:   SummarizeCallStack(css[0], ci.topPackages, v.PkgPath),
 			Stack:  stack,
