diff --git a/internal/cgen/cgen.go b/internal/cgen/cgen.go
index b7d6e21..ff786eb 100644
--- a/internal/cgen/cgen.go
+++ b/internal/cgen/cgen.go
@@ -461,12 +461,11 @@
 	if len(builtInInterfaceMethods) != 0 {
 		return nil
 	}
-	return builtin.ParseFuncs(&builtInTokenMap, builtin.InterfaceFuncs, false,
-		func(f *a.Func) error {
-			qid := f.Receiver()
-			builtInInterfaceMethods[qid] = append(builtInInterfaceMethods[qid], f)
-			return nil
-		})
+	return builtin.ParseFuncs(&builtInTokenMap, builtin.InterfaceFuncs, func(f *a.Func) error {
+		qid := f.Receiver()
+		builtInInterfaceMethods[qid] = append(builtInInterfaceMethods[qid], f)
+		return nil
+	})
 }
 
 type gen struct {
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index 773a60d..888bf2d 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -17,6 +17,7 @@
 
 import (
 	"fmt"
+	"strings"
 
 	"github.com/google/wuffs/lang/parse"
 
@@ -370,23 +371,29 @@
 )
 
 var SliceFuncs = []string{
-	"T1.copy_from_slice!(s: T1) u64",
-	"T1.length() u64",
-	"T1.prefix(up_to: u64) T1",
-	"T1.suffix(up_to: u64) T1",
+	"GENERIC T1.copy_from_slice!(s: T1) u64",
+	"GENERIC T1.length() u64",
+	"GENERIC T1.prefix(up_to: u64) T1",
+	"GENERIC T1.suffix(up_to: u64) T1",
 }
 
 var TableFuncs = []string{
-	"T2.height() u64",
-	"T2.stride() u64",
-	"T2.width() u64",
+	"GENERIC T2.height() u64",
+	"GENERIC T2.stride() u64",
+	"GENERIC T2.width() u64",
 
-	"T2.row(y: u32) T1",
+	"GENERIC T2.row(y: u32) T1",
 }
 
-func ParseFuncs(tm *t.Map, ss []string, generic bool, callback func(*a.Func) error) error {
+func ParseFuncs(tm *t.Map, ss []string, callback func(*a.Func) error) error {
+	const GENERIC = "GENERIC "
 	buf := []byte(nil)
 	for _, s := range ss {
+		generic := strings.HasPrefix(s, GENERIC)
+		if generic {
+			s = s[len(GENERIC):]
+		}
+
 		buf = buf[:0]
 		buf = append(buf, "pub func "...)
 		buf = append(buf, s...)
diff --git a/lang/check/check.go b/lang/check/check.go
index 445879e..04e014d 100644
--- a/lang/check/check.go
+++ b/lang/check/check.go
@@ -104,16 +104,16 @@
 		unseenInterfaceImpls:  map[t.QQID]*a.Func{},
 	}
 
-	if err := c.parseBuiltInFuncs(nil, builtin.Funcs, false); err != nil {
+	if err := c.parseBuiltInFuncs(nil, builtin.Funcs); err != nil {
 		return nil, err
 	}
-	if err := c.parseBuiltInFuncs(c.builtInSliceFuncs, builtin.SliceFuncs, true); err != nil {
+	if err := c.parseBuiltInFuncs(c.builtInSliceFuncs, builtin.SliceFuncs); err != nil {
 		return nil, err
 	}
-	if err := c.parseBuiltInFuncs(c.builtInTableFuncs, builtin.TableFuncs, true); err != nil {
+	if err := c.parseBuiltInFuncs(c.builtInTableFuncs, builtin.TableFuncs); err != nil {
 		return nil, err
 	}
-	if err := c.parseBuiltInFuncs(c.builtInInterfaceFuncs, builtin.InterfaceFuncs, false); err != nil {
+	if err := c.parseBuiltInFuncs(c.builtInInterfaceFuncs, builtin.InterfaceFuncs); err != nil {
 		return nil, err
 	}
 
diff --git a/lang/check/resolve.go b/lang/check/resolve.go
index 8c8a371..3893ef8 100644
--- a/lang/check/resolve.go
+++ b/lang/check/resolve.go
@@ -110,8 +110,8 @@
 	t.IDDecodeFrameOptions: typeExprDecodeFrameOptions,
 }
 
-func (c *Checker) parseBuiltInFuncs(m map[t.QQID]*a.Func, ss []string, generic bool) error {
-	return builtin.ParseFuncs(c.tm, ss, generic, func(f *a.Func) error {
+func (c *Checker) parseBuiltInFuncs(m map[t.QQID]*a.Func, ss []string) error {
+	return builtin.ParseFuncs(c.tm, ss, func(f *a.Func) error {
 		if err := c.checkFuncSignature(f.AsNode()); err != nil {
 			return err
 		}
