diff --git a/cmd/govulncheck/html.go b/cmd/govulncheck/html.go
index 2f7b678..f66751a 100644
--- a/cmd/govulncheck/html.go
+++ b/cmd/govulncheck/html.go
@@ -20,7 +20,7 @@
 //go:embed static/*
 var staticContent embed.FS
 
-func html(w io.Writer, r *vulncheck.Result, ci *govulncheck.CallInfo) error {
+func html(w io.Writer, ci *govulncheck.CallInfo) error {
 	tmpl, err := template.New("govulncheck.tmpl").Funcs(template.FuncMap{
 		"funcName": govulncheck.FuncName,
 	}).ParseFS(staticContent, "static/govulncheck.tmpl")
diff --git a/cmd/govulncheck/main.go b/cmd/govulncheck/main.go
index 7f3b479..1d80457 100644
--- a/cmd/govulncheck/main.go
+++ b/cmd/govulncheck/main.go
@@ -128,7 +128,7 @@
 		// set of top-level packages, used to find representative symbols
 		ci := govulncheck.GetCallInfo(r, pkgs)
 		if *htmlFlag {
-			if err := html(os.Stdout, r, ci); err != nil {
+			if err := html(os.Stdout, ci); err != nil {
 				die("writing HTML: %v", err)
 			}
 		} else {
@@ -195,13 +195,10 @@
 	fmt.Println()
 }
 
-const labelWidth = 16
-
-func writeLine(label, text string) {
-	fmt.Printf("%-*s%s\n", labelWidth, label, text)
-}
-
-const lineLength = 55
+const (
+	labelWidth = 16
+	lineLength = 55
+)
 
 func writeText(r *vulncheck.Result, ci *govulncheck.CallInfo, unaffectedMods map[string][]string) {
 	uniqueVulns := map[string]bool{}
@@ -302,17 +299,6 @@
 	}
 }
 
-func packageModule(p *packages.Package) *packages.Module {
-	m := p.Module
-	if m == nil {
-		return nil
-	}
-	if r := m.Replace; r != nil {
-		return r
-	}
-	return m
-}
-
 func isFile(path string) bool {
 	s, err := os.Stat(path)
 	if err != nil {
