diff --git a/event/adapter/eventtest/eventtest.go b/event/adapter/eventtest/eventtest.go
index 71ffb80..915160a 100644
--- a/event/adapter/eventtest/eventtest.go
+++ b/event/adapter/eventtest/eventtest.go
@@ -62,6 +62,9 @@
 func FixedNow(ctx context.Context) {
 	nextTime, _ := time.Parse(time.RFC3339Nano, "2020-03-05T14:27:48Z")
 	e, _ := event.FromContext(ctx)
+	if e == nil {
+		return
+	}
 	e.Now = func() time.Time {
 		thisTime := nextTime
 		nextTime = nextTime.Add(time.Second)
diff --git a/event/common_test.go b/event/common_test.go
index 5c0797a..892287b 100644
--- a/event/common_test.go
+++ b/event/common_test.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !race
+// +build !disable_events
 
 package event_test
 
diff --git a/event/disabled.go b/event/disabled.go
index 7de05ff..77cbe75 100644
--- a/event/disabled.go
+++ b/event/disabled.go
@@ -11,16 +11,14 @@
 	"time"
 )
 
-type Builder struct{}
-type TraceBuilder struct{ ctx context.Context }
+type Builder struct{ ctx context.Context }
 type Exporter struct {
 	Now func() time.Time
 }
 
-func NewExporter(h Handler) *Exporter { return &Exporter{} }
+func NewExporter(h interface{}) *Exporter { return &Exporter{} }
 
 func To(ctx context.Context) Builder                        { return Builder{} }
-func Trace(ctx context.Context) TraceBuilder                { return TraceBuilder{ctx: ctx} }
 func (b Builder) Clone() Builder                            { return b }
 func (b Builder) With(label Label) Builder                  { return b }
 func (b Builder) WithAll(labels ...Label) Builder           { return b }
@@ -30,15 +28,13 @@
 func (b Builder) Annotate()                                 {}
 func (b Builder) End()                                      {}
 func (b Builder) Event() *Event                             { return &Event{} }
-func (b TraceBuilder) With(label Label) TraceBuilder        { return b }
-func (b TraceBuilder) WithAll(labels ...Label) TraceBuilder { return b }
-
-func (b TraceBuilder) Start(name string) (context.Context, func()) {
+func (b Builder) Start(name string) (context.Context, func()) {
 	return b.ctx, func() {}
 }
 
 func newContext(ctx context.Context, exporter *Exporter, parent uint64) context.Context {
 	return ctx
 }
+func FromContext(ctx context.Context) (*Exporter, uint64) { return nil, 0 }
 
 func setDefaultExporter(e *Exporter) {}
diff --git a/event/logging/egokit/gokit_test.go b/event/logging/egokit/gokit_test.go
index cb554a2..eac1008 100644
--- a/event/logging/egokit/gokit_test.go
+++ b/event/logging/egokit/gokit_test.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !disable_events
+
 package egokit
 
 import (
diff --git a/event/logging/elogr/logr_test.go b/event/logging/elogr/logr_test.go
index c63f9cd..183a15f 100644
--- a/event/logging/elogr/logr_test.go
+++ b/event/logging/elogr/logr_test.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !disable_events
+
 package elogr
 
 import (
diff --git a/event/logging/elogrus/logrus.go b/event/logging/elogrus/logrus.go
index ebc2f73..1f563e9 100644
--- a/event/logging/elogrus/logrus.go
+++ b/event/logging/elogrus/logrus.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !disable_events
+
 // Package elogrus provides a logrus Formatter for events.
 // To use for the global logger:
 //   logrus.SetFormatter(elogrus.NewFormatter(exporter))
diff --git a/event/logging/elogrus/logrus_test.go b/event/logging/elogrus/logrus_test.go
index 9304c2f..9ffe5bd 100644
--- a/event/logging/elogrus/logrus_test.go
+++ b/event/logging/elogrus/logrus_test.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !disable_events
+
 package elogrus
 
 import (
diff --git a/event/logging/ezap/zap.go b/event/logging/ezap/zap.go
index b9ab118..a19f8c5 100644
--- a/event/logging/ezap/zap.go
+++ b/event/logging/ezap/zap.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !disable_events
+
 // ezap provides an implementation of zapcore.Core for events.
 // To use globally:
 //     zap.ReplaceGlobals(zap.New(NewCore(exporter)))
diff --git a/event/logging/ezap/zap_test.go b/event/logging/ezap/zap_test.go
index c440edf..37f7e1d 100644
--- a/event/logging/ezap/zap_test.go
+++ b/event/logging/ezap/zap_test.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !disable_events
+
 package ezap
 
 import (
diff --git a/event/otel/trace_test.go b/event/otel/trace_test.go
index 65310de..0f808b5 100644
--- a/event/otel/trace_test.go
+++ b/event/otel/trace_test.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// +build !disable_events
+
 package otel
 
 import (
