diff --git a/event/adapter/gokit/gokit_test.go b/event/adapter/gokit/gokit_test.go
index d76dfaf..5db17dd 100644
--- a/event/adapter/gokit/gokit_test.go
+++ b/event/adapter/gokit/gokit_test.go
@@ -30,7 +30,7 @@
 			event.String("msg", "mess"),
 		},
 	}}
-	if diff := cmp.Diff(want, h.Got, eventtest.CmpOption()); diff != "" {
+	if diff := cmp.Diff(want, h.Got, eventtest.CmpOptions()...); diff != "" {
 		t.Errorf("mismatch (-want, +got):\n%s", diff)
 	}
 }
diff --git a/event/adapter/logr/logr_test.go b/event/adapter/logr/logr_test.go
index 66a60f0..8dcb87b 100644
--- a/event/adapter/logr/logr_test.go
+++ b/event/adapter/logr/logr_test.go
@@ -32,7 +32,7 @@
 			event.String("msg", "mess"),
 		},
 	}}
-	if diff := cmp.Diff(want, th.Got, eventtest.CmpOption()); diff != "" {
+	if diff := cmp.Diff(want, th.Got, eventtest.CmpOptions()...); diff != "" {
 		t.Errorf("mismatch (-want, +got):\n%s", diff)
 	}
 }
diff --git a/event/adapter/logrus/logrus_test.go b/event/adapter/logrus/logrus_test.go
index 467485e..bf8b850 100644
--- a/event/adapter/logrus/logrus_test.go
+++ b/event/adapter/logrus/logrus_test.go
@@ -11,7 +11,6 @@
 	"testing"
 
 	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
 	"github.com/sirupsen/logrus"
 	"golang.org/x/exp/event"
 	elogrus "golang.org/x/exp/event/adapter/logrus"
@@ -39,8 +38,7 @@
 	}}
 	// logrus fields are stored in a map, so we have to sort to overcome map
 	// iteration indeterminacy.
-	less := func(a, b event.Label) bool { return a.Name < b.Name }
-	if diff := cmp.Diff(want, th.Got, cmpopts.SortSlices(less), eventtest.CmpOption()); diff != "" {
+	if diff := cmp.Diff(want, th.Got, eventtest.CmpOptions()...); diff != "" {
 		t.Errorf("mismatch (-want, +got):\n%s", diff)
 	}
 }
diff --git a/event/adapter/zap/zap_test.go b/event/adapter/zap/zap_test.go
index 55461bf..95f6849 100644
--- a/event/adapter/zap/zap_test.go
+++ b/event/adapter/zap/zap_test.go
@@ -34,7 +34,7 @@
 			event.String("msg", "mess"),
 		},
 	}}
-	if diff := cmp.Diff(want, h.Got, eventtest.CmpOption()); diff != "" {
+	if diff := cmp.Diff(want, h.Got, eventtest.CmpOptions()...); diff != "" {
 		t.Errorf("mismatch (-want, +got):\n%s", diff)
 	}
 }
diff --git a/event/common_test.go b/event/common_test.go
deleted file mode 100644
index 35d021e..0000000
--- a/event/common_test.go
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !disable_events
-
-package event_test
-
-import (
-	"context"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"golang.org/x/exp/event"
-	"golang.org/x/exp/event/eventtest"
-)
-
-func TestCommon(t *testing.T) {
-	m := event.NewCounter("m", "")
-	for _, test := range []struct {
-		method string
-		events func(context.Context)
-		expect []event.Event
-	}{{
-		method: "Log",
-		events: func(ctx context.Context) { event.Log(ctx, "simple message") },
-		expect: []event.Event{{
-			ID:     1,
-			Kind:   event.LogKind,
-			Labels: []event.Label{event.String("msg", "simple message")},
-		}},
-	}, {
-		method: "Logf",
-		events: func(ctx context.Context) { event.Logf(ctx, "logf %s message", "to") },
-		expect: []event.Event{{
-			ID:     1,
-			Kind:   event.LogKind,
-			Labels: []event.Label{event.String("msg", "logf to message")},
-		}},
-	}, {
-		method: "Metric",
-		events: func(ctx context.Context) {
-			m.Record(ctx, 3)
-		},
-		expect: []event.Event{{
-			ID:   1,
-			Kind: event.MetricKind,
-			Labels: []event.Label{
-				event.Int64("metricValue", 3),
-				event.Value("metric", m),
-			},
-		}},
-	}, {
-		method: "Annotate",
-		events: func(ctx context.Context) { event.Annotate(ctx, event.String("other", "some value")) },
-		expect: []event.Event{{
-			ID:     1,
-			Labels: []event.Label{event.String("other", "some value")},
-		}},
-	}, {
-		method: "Start",
-		events: func(ctx context.Context) {
-			ctx = event.Start(ctx, `a trace`)
-			event.End(ctx)
-		},
-		expect: []event.Event{{
-			ID:     1,
-			Kind:   event.StartKind,
-			Labels: []event.Label{event.String("name", "a trace")},
-		}, {
-			ID:     2,
-			Parent: 1,
-			Kind:   event.EndKind,
-			Labels: []event.Label{},
-		}},
-	}} {
-		t.Run(test.method, func(t *testing.T) {
-			ctx, h := eventtest.NewCapture()
-			test.events(ctx)
-			if diff := cmp.Diff(test.expect, h.Got, eventtest.CmpOption()); diff != "" {
-				t.Errorf("mismatch (-want, +got):\n%s", diff)
-			}
-		})
-	}
-}
diff --git a/event/event_test.go b/event/event_test.go
index 8bedc21..d918bcd 100644
--- a/event/event_test.go
+++ b/event/event_test.go
@@ -8,12 +8,13 @@
 
 import (
 	"context"
+	"errors"
 	"fmt"
 	"os"
-	"strings"
 	"testing"
 	"time"
 
+	"github.com/google/go-cmp/cmp"
 	"golang.org/x/exp/event"
 	"golang.org/x/exp/event/adapter/logfmt"
 	"golang.org/x/exp/event/eventtest"
@@ -26,41 +27,84 @@
 	counter = event.NewCounter("hits", "cache hits")
 	gauge   = event.NewFloatGauge("temperature", "CPU board temperature in Celsius")
 	latency = event.NewDuration("latency", "how long it took")
+	err     = errors.New("an error")
 )
 
-func TestPrint(t *testing.T) {
-	ctx := context.Background()
+func TestCommon(t *testing.T) {
 	for _, test := range []struct {
-		name   string
+		method string
 		events func(context.Context)
-		expect string
+		expect []event.Event
 	}{{
-		name:   "simple",
+		method: "simple",
 		events: func(ctx context.Context) { event.Log(ctx, "a message") },
-		expect: `time="2020/03/05 14:27:48" msg="a message"
-`}, {
-		name:   "log 1",
+		expect: []event.Event{{
+			ID:     1,
+			Kind:   event.LogKind,
+			Labels: []event.Label{event.String("msg", "a message")},
+		}},
+	}, {
+		method: "log 1",
 		events: func(ctx context.Context) { event.Log(ctx, "a message", l1) },
-		expect: `time="2020/03/05 14:27:48" l1=1 msg="a message"`,
+		expect: []event.Event{{
+			ID:     1,
+			Kind:   event.LogKind,
+			Labels: []event.Label{event.String("msg", "a message"), l1},
+		}},
 	}, {
-		name:   "log 2",
+		method: "log 2",
 		events: func(ctx context.Context) { event.Log(ctx, "a message", l1, l2) },
-		expect: `time="2020/03/05 14:27:48" l1=1 l2=2 msg="a message"`,
+		expect: []event.Event{{
+			ID:     1,
+			Kind:   event.LogKind,
+			Labels: []event.Label{event.String("msg", "a message"), l1, l2},
+		}},
 	}, {
-		name:   "log 3",
+		method: "log 3",
 		events: func(ctx context.Context) { event.Log(ctx, "a message", l1, l2, l3) },
-		expect: `time="2020/03/05 14:27:48" l1=1 l2=2 l3=3 msg="a message"`,
+		expect: []event.Event{{
+			ID:     1,
+			Kind:   event.LogKind,
+			Labels: []event.Label{event.String("msg", "a message"), l1, l2, l3},
+		}},
 	}, {
-		name: "span",
+		method: "logf",
+		events: func(ctx context.Context) { event.Logf(ctx, "logf %s message", "to") },
+		expect: []event.Event{{
+			ID:     1,
+			Kind:   event.LogKind,
+			Labels: []event.Label{event.String("msg", "logf to message")},
+		}},
+	}, {
+		method: "error",
+		events: func(ctx context.Context) { event.Error(ctx, "failed", err, l1) },
+		expect: []event.Event{{
+			ID:   1,
+			Kind: event.LogKind,
+			Labels: []event.Label{
+				event.String("msg", "failed"),
+				event.Value("error", err),
+				l1,
+			},
+		}},
+	}, {
+		method: "span",
 		events: func(ctx context.Context) {
-			ctx = event.Start(ctx, "span")
+			ctx = event.Start(ctx, `span`)
 			event.End(ctx)
 		},
-		expect: `
-time="2020/03/05 14:27:48" name=span trace=1
-time="2020/03/05 14:27:49" parent=1 end
-`}, {
-		name: "span nested",
+		expect: []event.Event{{
+			ID:     1,
+			Kind:   event.StartKind,
+			Labels: []event.Label{event.String("name", "span")},
+		}, {
+			ID:     2,
+			Parent: 1,
+			Kind:   event.EndKind,
+			Labels: []event.Label{},
+		}},
+	}, {
+		method: "span nested",
 		events: func(ctx context.Context) {
 			ctx = event.Start(ctx, "parent")
 			defer event.End(ctx)
@@ -68,36 +112,83 @@
 			defer event.End(child)
 			event.Log(child, "message")
 		},
-		expect: `
-time="2020/03/05 14:27:48" name=parent trace=1
-time="2020/03/05 14:27:49" parent=1 name=child trace=2
-time="2020/03/05 14:27:50" parent=2 msg=message
-time="2020/03/05 14:27:51" parent=2 end
-time="2020/03/05 14:27:52" parent=1 end
-`}, {
-		name:   "counter",
+		expect: []event.Event{{
+			ID:     1,
+			Kind:   event.StartKind,
+			Labels: []event.Label{event.String("name", "parent")},
+		}, {
+			ID:     2,
+			Parent: 1,
+			Kind:   event.StartKind,
+			Labels: []event.Label{event.String("name", "child")},
+		}, {
+			ID:     3,
+			Parent: 2,
+			Kind:   event.LogKind,
+			Labels: []event.Label{event.String("msg", "message")},
+		}, {
+			ID:     4,
+			Parent: 2,
+			Kind:   event.EndKind,
+			Labels: []event.Label{},
+		}, {
+			ID:     5,
+			Parent: 1,
+			Kind:   event.EndKind,
+			Labels: []event.Label{},
+		}},
+	}, {
+		method: "counter",
 		events: func(ctx context.Context) { counter.Record(ctx, 2, l1) },
-		expect: `time="2020/03/05 14:27:48" metricValue=2 metric="Metric(\"golang.org/x/exp/event_test/hits\")" l1=1`,
+		expect: []event.Event{{
+			ID:   1,
+			Kind: event.MetricKind,
+			Labels: []event.Label{
+				event.Int64("metricValue", 2),
+				event.Value("metric", counter),
+				l1,
+			},
+		}},
 	}, {
-		name:   "gauge",
+		method: "gauge",
 		events: func(ctx context.Context) { gauge.Record(ctx, 98.6, l1) },
-		expect: `time="2020/03/05 14:27:48" metricValue=98.6 metric="Metric(\"golang.org/x/exp/event_test/temperature\")" l1=1`,
+		expect: []event.Event{{
+			ID:   1,
+			Kind: event.MetricKind,
+			Labels: []event.Label{
+				event.Float64("metricValue", 98.6),
+				event.Value("metric", gauge),
+				l1,
+			},
+		}},
 	}, {
-		name: "duration",
-		events: func(ctx context.Context) {
-			latency.Record(ctx, 3*time.Second, l1, l2)
-		},
-		expect: `time="2020/03/05 14:27:48" metricValue=3s metric="Metric(\"golang.org/x/exp/event_test/latency\")" l1=1 l2=2`,
+		method: "duration",
+		events: func(ctx context.Context) { latency.Record(ctx, 3*time.Second, l1, l2) },
+		expect: []event.Event{{
+			ID:   1,
+			Kind: event.MetricKind,
+			Labels: []event.Label{
+				event.Duration("metricValue", 3*time.Second),
+				event.Value("metric", latency),
+				l1, l2,
+			},
+		}},
 	}, {
-		name:   "annotate",
+		method: "annotate",
 		events: func(ctx context.Context) { event.Annotate(ctx, l1) },
-		expect: `time="2020/03/05 14:27:48" l1=1`,
+		expect: []event.Event{{
+			ID:     1,
+			Labels: []event.Label{l1},
+		}},
 	}, {
-		name:   "annotate 2",
+		method: "annotate 2",
 		events: func(ctx context.Context) { event.Annotate(ctx, l1, l2) },
-		expect: `time="2020/03/05 14:27:48" l1=1 l2=2`,
+		expect: []event.Event{{
+			ID:     1,
+			Labels: []event.Label{l1, l2},
+		}},
 	}, {
-		name: "multiple events",
+		method: "multiple events",
 		events: func(ctx context.Context) {
 			/*TODO: this is supposed to be using a cached target
 			t := event.To(ctx)
@@ -108,18 +199,29 @@
 			event.Log(ctx, "my event", event.Int64("myInt", 6))
 			event.Log(ctx, "string event", event.String("myString", "some string value"))
 		},
-		expect: `
-time="2020/03/05 14:27:48" myInt=6 msg="my event"
-time="2020/03/05 14:27:49" myString="some string value" msg="string event"
-`}} {
-		buf := &strings.Builder{}
-		ctx := event.WithExporter(ctx, event.NewExporter(logfmt.NewHandler(buf), eventtest.ExporterOptions()))
-		test.events(ctx)
-		got := strings.TrimSpace(buf.String())
-		expect := strings.TrimSpace(test.expect)
-		if got != expect {
-			t.Errorf("%s failed\ngot   : %s\nexpect: %s", test.name, got, expect)
-		}
+		expect: []event.Event{{
+			ID:   1,
+			Kind: event.LogKind,
+			Labels: []event.Label{
+				event.String("msg", "my event"),
+				event.Int64("myInt", 6),
+			},
+		}, {
+			ID:   2,
+			Kind: event.LogKind,
+			Labels: []event.Label{
+				event.String("msg", "string event"),
+				event.String("myString", "some string value"),
+			},
+		}},
+	}} {
+		t.Run(test.method, func(t *testing.T) {
+			ctx, h := eventtest.NewCapture()
+			test.events(ctx)
+			if diff := cmp.Diff(test.expect, h.Got, eventtest.CmpOptions()...); diff != "" {
+				t.Errorf("mismatch (-want, +got):\n%s", diff)
+			}
+		})
 	}
 }
 
diff --git a/event/eventtest/eventtest.go b/event/eventtest/eventtest.go
index dd55a43..8081159 100644
--- a/event/eventtest/eventtest.go
+++ b/event/eventtest/eventtest.go
@@ -55,6 +55,11 @@
 	}
 }
 
-func CmpOption() cmp.Option {
-	return cmpopts.IgnoreFields(event.Event{}, "At", "ctx", "target", "labels")
+func CmpOptions() []cmp.Option {
+	return []cmp.Option{
+		cmpopts.SortSlices(func(x, y event.Label) bool {
+			return x.Name < y.Name
+		}),
+		cmpopts.IgnoreFields(event.Event{}, "At", "ctx", "target", "labels"),
+	}
 }
diff --git a/event/label_test.go b/event/label_test.go
index 7ca43a8..0bf3ae1 100644
--- a/event/label_test.go
+++ b/event/label_test.go
@@ -35,6 +35,10 @@
 	if got := v.String(); got != s {
 		t.Errorf("got %v, want %v", got, s)
 	}
+	v = event.Bytes("key", []byte(s))
+	if got := v.Bytes(); string(got) != s {
+		t.Errorf("got %v, want %v", got, s)
+	}
 	tm := time.Now()
 	v = event.Value("key", tm)
 	if got := v.Interface(); got != tm {
@@ -91,6 +95,8 @@
 		{"uint64", func() { event.Int64("key", 3).Uint64() }},
 		{"float64", func() { event.Uint64("key", 3).Float64() }},
 		{"bool", func() { event.Int64("key", 3).Bool() }},
+		{"duration", func() { event.Value("key", "value").Duration() }},
+		{"bytes", func() { event.String("key", "value").Bytes() }},
 	} {
 		if !panics(test.f) {
 			t.Errorf("%s: got no panic, want panic", test.name)
