diff --git a/event/adapter/logfmt/logfmt.go b/event/adapter/logfmt/logfmt.go
index 26b24f1..40741cf 100644
--- a/event/adapter/logfmt/logfmt.go
+++ b/event/adapter/logfmt/logfmt.go
@@ -83,11 +83,6 @@
 	p.WriteString(" kind=")
 	p.WriteString(kind)
 
-	if ev.Message != "" {
-		p.WriteString(" msg=")
-		p.Quote(ev.Message)
-	}
-
 	for _, l := range ev.Labels {
 		if l.Name == "" {
 			continue
diff --git a/event/bench/event_enabled_test.go b/event/bench/event_enabled_test.go
index d9164ce..0c18d48 100644
--- a/event/bench/event_enabled_test.go
+++ b/event/bench/event_enabled_test.go
@@ -33,21 +33,21 @@
 
 func TestLogEvent(t *testing.T) {
 	testBenchmark(t, eventPrint, eventLog, `
-time=2020-03-05T14:27:48 id=1 kind=log msg=a A=0
-time=2020-03-05T14:27:49 id=2 kind=log msg=b B="A value"
-time=2020-03-05T14:27:50 id=3 kind=log msg=a A=1
-time=2020-03-05T14:27:51 id=4 kind=log msg=b B="Some other value"
-time=2020-03-05T14:27:52 id=5 kind=log msg=a A=22
-time=2020-03-05T14:27:53 id=6 kind=log msg=b B="Some other value"
-time=2020-03-05T14:27:54 id=7 kind=log msg=a A=333
-time=2020-03-05T14:27:55 id=8 kind=log msg=b B=""
-time=2020-03-05T14:27:56 id=9 kind=log msg=a A=4444
-time=2020-03-05T14:27:57 id=10 kind=log msg=b B="prime count of values"
-time=2020-03-05T14:27:58 id=11 kind=log msg=a A=55555
-time=2020-03-05T14:27:59 id=12 kind=log msg=b B=V
-time=2020-03-05T14:28:00 id=13 kind=log msg=a A=666666
-time=2020-03-05T14:28:01 id=14 kind=log msg=b B="A value"
-time=2020-03-05T14:28:02 id=15 kind=log msg=a A=7777777
-time=2020-03-05T14:28:03 id=16 kind=log msg=b B="A value"
+time=2020-03-05T14:27:48 id=1 kind=log A=0 msg=a
+time=2020-03-05T14:27:49 id=2 kind=log B="A value" msg=b
+time=2020-03-05T14:27:50 id=3 kind=log A=1 msg=a
+time=2020-03-05T14:27:51 id=4 kind=log B="Some other value" msg=b
+time=2020-03-05T14:27:52 id=5 kind=log A=22 msg=a
+time=2020-03-05T14:27:53 id=6 kind=log B="Some other value" msg=b
+time=2020-03-05T14:27:54 id=7 kind=log A=333 msg=a
+time=2020-03-05T14:27:55 id=8 kind=log B="" msg=b
+time=2020-03-05T14:27:56 id=9 kind=log A=4444 msg=a
+time=2020-03-05T14:27:57 id=10 kind=log B="prime count of values" msg=b
+time=2020-03-05T14:27:58 id=11 kind=log A=55555 msg=a
+time=2020-03-05T14:27:59 id=12 kind=log B=V msg=b
+time=2020-03-05T14:28:00 id=13 kind=log A=666666 msg=a
+time=2020-03-05T14:28:01 id=14 kind=log B="A value" msg=b
+time=2020-03-05T14:28:02 id=15 kind=log A=7777777 msg=a
+time=2020-03-05T14:28:03 id=16 kind=log B="A value" msg=b
 `)
 }
diff --git a/event/builder.go b/event/builder.go
index 9b5e8a0..a62eaa7 100644
--- a/event/builder.go
+++ b/event/builder.go
@@ -24,7 +24,7 @@
 // all for the very common cases of simple events. The length needs to be large
 // enough to cope with the majority of events but no so large as to cause undue
 // stack pressure.
-const preallocateLabels = 4
+const preallocateLabels = 6
 
 type builder struct {
 	exporter *Exporter
@@ -122,7 +122,7 @@
 func (b Builder) log(message string) {
 	b.data.exporter.mu.Lock()
 	defer b.data.exporter.mu.Unlock()
-	b.data.Event.Message = message
+	b.data.Event.Labels = append(b.data.Event.Labels, Message.Of(message))
 	b.data.exporter.prepare(&b.data.Event)
 	b.data.exporter.log.Log(b.ctx, &b.data.Event)
 }
@@ -205,7 +205,7 @@
 		eb.data.exporter = b.data.exporter
 		eb.data.Event.Parent = b.data.Event.ID
 		// and now deliver the start event
-		b.data.Event.Message = name
+		b.data.Event.Labels = append(b.data.Event.Labels, Trace.Of(name))
 		ctx = newContext(ctx, b.data.exporter, b.data.Event.ID)
 		ctx = b.data.exporter.trace.Start(ctx, &b.data.Event)
 		eb.ctx = ctx
diff --git a/event/common.go b/event/common.go
new file mode 100644
index 0000000..08c95a7
--- /dev/null
+++ b/event/common.go
@@ -0,0 +1,24 @@
+// Copyright 2019 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.
+
+package event
+
+const Message = stringKey("msg")
+const Trace = stringKey("name")
+
+type stringKey string
+
+// Of creates a new message Label.
+func (k stringKey) Of(msg string) Label {
+	return Label{Name: string(k), Value: StringOf(msg)}
+}
+
+func (k stringKey) Find(ev *Event) (string, bool) {
+	for i := len(ev.Labels) - 1; i >= 0; i-- {
+		if ev.Labels[i].Name == string(k) {
+			return ev.Labels[i].Value.String(), true
+		}
+	}
+	return "", false
+}
diff --git a/event/common_test.go b/event/common_test.go
new file mode 100644
index 0000000..5c0797a
--- /dev/null
+++ b/event/common_test.go
@@ -0,0 +1,90 @@
+// 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 !race
+
+package event_test
+
+import (
+	"context"
+	"testing"
+
+	"golang.org/x/exp/event"
+)
+
+func TestCommon(t *testing.T) {
+	h := &catchHandler{}
+	ctx := event.WithExporter(context.Background(), event.NewExporter(h))
+
+	const simple = "simple message"
+	const trace = "a trace"
+
+	event.To(ctx).Log(simple)
+	checkFind(t, h, "Log", event.Message, true, simple)
+	checkFind(t, h, "Log", event.Trace, false, "")
+
+	event.To(ctx).Metric()
+	checkFind(t, h, "Metric", event.Message, false, "")
+	checkFind(t, h, "Metric", event.Trace, false, "")
+
+	event.To(ctx).Annotate()
+	checkFind(t, h, "Annotate", event.Message, false, "")
+	checkFind(t, h, "Annotate", event.Trace, false, "")
+
+	_, end := event.To(ctx).Start(trace)
+	checkFind(t, h, "Start", event.Message, false, "")
+	checkFind(t, h, "Start", event.Trace, true, trace)
+
+	end()
+	checkFind(t, h, "End", event.Message, false, "")
+	checkFind(t, h, "End", event.Trace, false, "")
+}
+
+type finder interface {
+	Find(*event.Event) (string, bool)
+}
+
+func checkFind(t *testing.T, h *catchHandler, method string, key finder, match bool, text string) {
+	m, ok := key.Find(&h.ev)
+	if ok && !match {
+		t.Errorf("%s produced an event with a %v", method, key)
+	}
+	if !ok && match {
+		t.Errorf("%s did not produce an event with a %v", method, key)
+	}
+	if m != text {
+		t.Errorf("Expected event with %v %q from %s got %q", key, text, method, m)
+	}
+}
+
+type catchHandler struct {
+	ev event.Event
+}
+
+func (h *catchHandler) Log(ctx context.Context, ev *event.Event) {
+	h.event(ctx, ev)
+}
+
+func (h *catchHandler) Metric(ctx context.Context, ev *event.Event) {
+	h.event(ctx, ev)
+}
+
+func (h *catchHandler) Annotate(ctx context.Context, ev *event.Event) {
+	h.event(ctx, ev)
+}
+
+func (h *catchHandler) Start(ctx context.Context, ev *event.Event) context.Context {
+	h.event(ctx, ev)
+	return ctx
+}
+
+func (h *catchHandler) End(ctx context.Context, ev *event.Event) {
+	h.event(ctx, ev)
+}
+
+func (h *catchHandler) event(ctx context.Context, ev *event.Event) {
+	h.ev = *ev
+	h.ev.Labels = make([]event.Label, len(ev.Labels))
+	copy(h.ev.Labels, ev.Labels)
+}
diff --git a/event/event.go b/event/event.go
index 3fcdde4..ac6fcab 100644
--- a/event/event.go
+++ b/event/event.go
@@ -12,11 +12,10 @@
 // Event holds the information about an event that occurred.
 // It combines the event metadata with the user supplied labels.
 type Event struct {
-	ID      uint64    // unique for this process id of the event
-	Parent  uint64    // id of the parent event for this event
-	At      time.Time // time at which the event is delivered to the exporter.
-	Message string
-	Labels  []Label
+	ID     uint64    // unique for this process id of the event
+	Parent uint64    // id of the parent event for this event
+	At     time.Time // time at which the event is delivered to the exporter.
+	Labels []Label
 }
 
 // LogHandler is a the type for something that handles log events as they occur.
diff --git a/event/event_test.go b/event/event_test.go
index 7085e41..a282bd5 100644
--- a/event/event_test.go
+++ b/event/event_test.go
@@ -37,15 +37,15 @@
 `}, {
 		name:   "log 1",
 		events: func(ctx context.Context) { event.To(ctx).With(l1).Log("a message") },
-		expect: `time=2020-03-05T14:27:48 id=1 kind=log msg="a message" l1=1`,
+		expect: `time=2020-03-05T14:27:48 id=1 kind=log l1=1 msg="a message"`,
 	}, {
 		name:   "log 2",
 		events: func(ctx context.Context) { event.To(ctx).With(l1).With(l2).Log("a message") },
-		expect: `time=2020-03-05T14:27:48 id=1 kind=log msg="a message" l1=1 l2=2`,
+		expect: `time=2020-03-05T14:27:48 id=1 kind=log l1=1 l2=2 msg="a message"`,
 	}, {
 		name:   "log 3",
 		events: func(ctx context.Context) { event.To(ctx).With(l1).With(l2).With(l3).Log("a message") },
-		expect: `time=2020-03-05T14:27:48 id=1 kind=log msg="a message" l1=1 l2=2 l3=3`,
+		expect: `time=2020-03-05T14:27:48 id=1 kind=log l1=1 l2=2 l3=3 msg="a message"`,
 	}, {
 		name: "span",
 		events: func(ctx context.Context) {
@@ -53,7 +53,7 @@
 			end()
 		},
 		expect: `
-time=2020-03-05T14:27:48 id=1 kind=start msg=span
+time=2020-03-05T14:27:48 id=1 kind=start name=span
 time=2020-03-05T14:27:49 id=2 span=1 kind=end
 `}, {
 		name: "span nested",
@@ -65,8 +65,8 @@
 			event.To(child).Log("message")
 		},
 		expect: `
-time=2020-03-05T14:27:48 id=1 kind=start msg=parent
-time=2020-03-05T14:27:49 id=2 span=1 kind=start msg=child
+time=2020-03-05T14:27:48 id=1 kind=start name=parent
+time=2020-03-05T14:27:49 id=2 span=1 kind=start name=child
 time=2020-03-05T14:27:50 id=3 span=2 kind=log msg=message
 time=2020-03-05T14:27:51 id=4 span=2 kind=end
 time=2020-03-05T14:27:52 id=5 span=1 kind=end
@@ -94,8 +94,8 @@
 			b.With(keys.String("myString").Of("some string value")).Log("string event")
 		},
 		expect: `
-time=2020-03-05T14:27:48 id=1 kind=log msg="my event" myInt=6
-time=2020-03-05T14:27:49 id=2 kind=log msg="string event" myString="some string value"
+time=2020-03-05T14:27:48 id=1 kind=log myInt=6 msg="my event"
+time=2020-03-05T14:27:49 id=2 kind=log myString="some string value" msg="string event"
 `}} {
 		buf := &strings.Builder{}
 		e := event.NewExporter(logfmt.NewPrinter(buf))
@@ -117,6 +117,6 @@
 	event.To(ctx).With(keys.Int("myInt").Of(6)).Log("my event")
 	event.To(ctx).With(keys.String("myString").Of("some string value")).Log("error event")
 	// Output:
-	// time=2020-03-05T14:27:48 id=1 kind=log msg="my event" myInt=6
-	// time=2020-03-05T14:27:49 id=2 kind=log msg="error event" myString="some string value"
+	// time=2020-03-05T14:27:48 id=1 kind=log myInt=6 msg="my event"
+	// time=2020-03-05T14:27:49 id=2 kind=log myString="some string value" msg="error event"
 }
diff --git a/event/logging/egokit/gokit_test.go b/event/logging/egokit/gokit_test.go
index e2cc659..92b2545 100644
--- a/event/logging/egokit/gokit_test.go
+++ b/event/logging/egokit/gokit_test.go
@@ -20,14 +20,14 @@
 	ctx := event.WithExporter(context.Background(), e)
 	log.Log(ctx, "msg", "mess", "level", 1, "name", "n/m", "traceID", 17, "resource", "R")
 	want := &event.Event{
-		ID:      1,
-		At:      internal.TestAt,
-		Message: "mess",
+		ID: 1,
+		At: internal.TestAt,
 		Labels: []event.Label{
 			keys.Value("level").Of(1),
 			keys.Value("name").Of("n/m"),
 			keys.Value("traceID").Of(17),
 			keys.Value("resource").Of("R"),
+			event.Message.Of("mess"),
 		},
 	}
 	if diff := cmp.Diff(want, &h.Got); diff != "" {
diff --git a/event/logging/elogr/logr_test.go b/event/logging/elogr/logr_test.go
index 85054c2..abbd284 100644
--- a/event/logging/elogr/logr_test.go
+++ b/event/logging/elogr/logr_test.go
@@ -20,14 +20,14 @@
 	log = log.WithName("m")
 	log.Info("mess", "traceID", 17, "resource", "R")
 	want := &event.Event{
-		At:      internal.TestAt,
-		ID:      1,
-		Message: "mess",
+		At: internal.TestAt,
+		ID: 1,
 		Labels: []event.Label{
 			internal.LevelKey.Of(3),
 			internal.NameKey.Of("n/m"),
 			keys.Value("traceID").Of(17),
 			keys.Value("resource").Of("R"),
+			event.Message.Of("mess"),
 		},
 	}
 	if diff := cmp.Diff(want, &th.Got); diff != "" {
diff --git a/event/logging/elogrus/logrus_test.go b/event/logging/elogrus/logrus_test.go
index 187ec9a..d57dddf 100644
--- a/event/logging/elogrus/logrus_test.go
+++ b/event/logging/elogrus/logrus_test.go
@@ -27,12 +27,12 @@
 	log.WithContext(ctx).WithField("traceID", 17).WithField("resource", "R").Info("mess")
 
 	want := &event.Event{
-		ID:      1,
-		Message: "mess",
+		ID: 1,
 		Labels: []event.Label{
 			internal.LevelKey.Of(4),
 			keys.Value("traceID").Of(17),
 			keys.Value("resource").Of("R"),
+			event.Message.Of("mess"),
 		},
 	}
 	th.Got.At = want.At
diff --git a/event/logging/ezap/zap_test.go b/event/logging/ezap/zap_test.go
index 20a22a1..5855bd2 100644
--- a/event/logging/ezap/zap_test.go
+++ b/event/logging/ezap/zap_test.go
@@ -22,14 +22,14 @@
 	log = log.Named("n/m")
 	log.Info("mess", zap.Float64("pi", 3.14))
 	want := &event.Event{
-		ID:      1,
-		Message: "mess",
+		ID: 1,
 		Labels: []event.Label{
 			keys.Int64("traceID").Of(17),
 			keys.String("resource").Of("R"),
 			internal.LevelKey.Of(0),
 			internal.NameKey.Of("n/m"),
 			keys.Float64("pi").Of(3.14),
+			event.Message.Of("mess"),
 		},
 	}
 	h.Got.At = want.At
diff --git a/event/otel/trace.go b/event/otel/trace.go
index bc75376..2cc56a4 100644
--- a/event/otel/trace.go
+++ b/event/otel/trace.go
@@ -25,7 +25,8 @@
 
 func (t *TraceHandler) Start(ctx context.Context, e *event.Event) context.Context {
 	opts := labelsToSpanOptions(e.Labels)
-	octx, span := t.tracer.Start(ctx, e.Message, opts...)
+	name, _ := event.Trace.Find(e)
+	octx, span := t.tracer.Start(ctx, name, opts...)
 	return context.WithValue(octx, spanKey{}, span)
 }
 
diff --git a/event/severity/severity_test.go b/event/severity/severity_test.go
index 11422cd..478770e 100644
--- a/event/severity/severity_test.go
+++ b/event/severity/severity_test.go
@@ -27,11 +27,11 @@
 	}{{
 		name:   "debug",
 		events: func(ctx context.Context) { event.To(ctx).With(severity.Debug).Log("a message") },
-		expect: `time=2020-03-05T14:27:48 id=1 kind=log msg="a message" level=debug`,
+		expect: `time=2020-03-05T14:27:48 id=1 kind=log level=debug msg="a message"`,
 	}, {
 		name:   "info",
 		events: func(ctx context.Context) { event.To(ctx).With(severity.Info).Log("a message") },
-		expect: `time=2020-03-05T14:27:48 id=1 kind=log msg="a message" level=info`},
+		expect: `time=2020-03-05T14:27:48 id=1 kind=log level=info msg="a message"`},
 	} {
 		buf := &strings.Builder{}
 		e := event.NewExporter(logfmt.NewPrinter(buf))
