diff --git a/cue/builtin.go b/cue/builtin.go
index 58d0bcf..54367ba 100644
--- a/cue/builtin.go
+++ b/cue/builtin.go
@@ -359,7 +359,10 @@
 }
 
 func (c *callCtxt) errf(src source, underlying error, format string, args ...interface{}) {
-	a := make([]interface{}, 0, 1+len(args))
+	a := make([]interface{}, 0, 2+len(args))
+	if err, ok := underlying.(*valueError); ok {
+		a = append(a, err.err)
+	}
 	a = append(a, format)
 	a = append(a, args...)
 	err := c.ctx.mkErr(src, a...)
diff --git a/cue/builtin_test.go b/cue/builtin_test.go
index a9c467f..5c03f11 100644
--- a/cue/builtin_test.go
+++ b/cue/builtin_test.go
@@ -78,6 +78,9 @@
 		test("encoding/hex", `hex.Decode("foo")`),
 		`_|_(error in call to encoding/hex.Decode: encoding/hex: invalid byte: U+006F 'o')`,
 	}, {
+		test("encoding/hex", `hex.Dump('foo')`),
+		`"00000000  66 6f 6f                                          |foo|\n"`,
+	}, {
 		test("encoding/json", `json.Validate("{\"a\":10}", {b:string})`),
 		`true`,
 	}, {
diff --git a/cue/builtins.go b/cue/builtins.go
index 1fc722d..e312947 100644
--- a/cue/builtins.go
+++ b/cue/builtins.go
@@ -142,7 +142,7 @@
 			Const: "64",
 		}, {
 			Name:   "Sum",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -161,7 +161,7 @@
 			Const: "64",
 		}, {
 			Name:   "Sum",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -183,7 +183,7 @@
 			Const: "64",
 		}, {
 			Name:   "Sum256",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -193,7 +193,7 @@
 			},
 		}, {
 			Name:   "Sum224",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -221,7 +221,7 @@
 			Const: "128",
 		}, {
 			Name:   "Sum512",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -231,7 +231,7 @@
 			},
 		}, {
 			Name:   "Sum384",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -241,7 +241,7 @@
 			},
 		}, {
 			Name:   "Sum512_224",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -251,7 +251,7 @@
 			},
 		}, {
 			Name:   "Sum512_256",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -290,7 +290,7 @@
 			},
 		}, {
 			Name:   "Encode",
-			Params: []kind{topKind, stringKind},
+			Params: []kind{topKind, bytesKind | stringKind},
 			Result: stringKind,
 			Func: func(c *callCtxt) {
 				encoding, src := c.value(0), c.bytes(1)
@@ -304,7 +304,7 @@
 		}, {
 			Name:   "Decode",
 			Params: []kind{topKind, stringKind},
-			Result: stringKind,
+			Result: bytesKind | stringKind,
 			Func: func(c *callCtxt) {
 				encoding, s := c.value(0), c.string(1)
 				c.ret, c.err = func() (interface{}, error) {
@@ -356,7 +356,7 @@
 			},
 		}, {
 			Name:   "Decode",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: listKind,
 			Func: func(c *callCtxt) {
 				r := c.reader(0)
@@ -390,7 +390,7 @@
 		}, {
 			Name:   "Decode",
 			Params: []kind{stringKind},
-			Result: stringKind,
+			Result: bytesKind | stringKind,
 			Func: func(c *callCtxt) {
 				s := c.string(0)
 				c.ret, c.err = func() (interface{}, error) {
@@ -399,7 +399,7 @@
 			},
 		}, {
 			Name:   "Dump",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: stringKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -409,7 +409,7 @@
 			},
 		}, {
 			Name:   "Encode",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: stringKind,
 			Func: func(c *callCtxt) {
 				src := c.bytes(0)
@@ -422,7 +422,7 @@
 	"encoding/json": &builtinPkg{
 		native: []*builtin{{
 			Name:   "Valid",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: boolKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -432,7 +432,7 @@
 			},
 		}, {
 			Name:   "Compact",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: stringKind,
 			Func: func(c *callCtxt) {
 				src := c.bytes(0)
@@ -446,7 +446,7 @@
 			},
 		}, {
 			Name:   "Indent",
-			Params: []kind{stringKind, stringKind, stringKind},
+			Params: []kind{bytesKind | stringKind, stringKind, stringKind},
 			Result: stringKind,
 			Func: func(c *callCtxt) {
 				src, prefix, indent := c.bytes(0), c.string(1), c.string(2)
@@ -460,7 +460,7 @@
 			},
 		}, {
 			Name:   "HTMLEscape",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: stringKind,
 			Func: func(c *callCtxt) {
 				src := c.bytes(0)
@@ -507,7 +507,7 @@
 			},
 		}, {
 			Name:   "Unmarshal",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				b := c.bytes(0)
@@ -525,7 +525,7 @@
 			},
 		}, {
 			Name:   "Validate",
-			Params: []kind{stringKind, topKind},
+			Params: []kind{bytesKind | stringKind, topKind},
 			Result: boolKind,
 			Func: func(c *callCtxt) {
 				b, v := c.bytes(0), c.value(1)
@@ -588,7 +588,7 @@
 			},
 		}, {
 			Name:   "Unmarshal",
-			Params: []kind{stringKind},
+			Params: []kind{bytesKind | stringKind},
 			Result: topKind,
 			Func: func(c *callCtxt) {
 				data := c.bytes(0)
@@ -598,7 +598,7 @@
 			},
 		}, {
 			Name:   "Validate",
-			Params: []kind{stringKind, topKind},
+			Params: []kind{bytesKind | stringKind, topKind},
 			Result: boolKind,
 			Func: func(c *callCtxt) {
 				b, v := c.bytes(0), c.value(1)
@@ -1978,7 +1978,7 @@
 	"strings": &builtinPkg{
 		native: []*builtin{{
 			Name:   "ByteAt",
-			Params: []kind{stringKind, intKind},
+			Params: []kind{bytesKind | stringKind, intKind},
 			Result: intKind,
 			Func: func(c *callCtxt) {
 				b, i := c.bytes(0), c.int(1)
@@ -1991,8 +1991,8 @@
 			},
 		}, {
 			Name:   "ByteSlice",
-			Params: []kind{stringKind, intKind, intKind},
-			Result: stringKind,
+			Params: []kind{bytesKind | stringKind, intKind, intKind},
+			Result: bytesKind | stringKind,
 			Func: func(c *callCtxt) {
 				b, start, end := c.bytes(0), c.int(1), c.int(2)
 				c.ret, c.err = func() (interface{}, error) {
diff --git a/cue/gen.go b/cue/gen.go
index 9d22f41..cd30512 100644
--- a/cue/gen.go
+++ b/cue/gen.go
@@ -428,7 +428,9 @@
 		cueKind += "bottomKind"
 	case "bool":
 		cueKind += "boolKind"
-	case "string", "bytes", "reader":
+	case "bytes", "reader":
+		cueKind += "bytesKind|stringKind"
+	case "string":
 		cueKind += "stringKind"
 	case "int", "int8", "int16", "int32", "rune", "int64",
 		"uint", "byte", "uint8", "uint16", "uint32", "uint64",
