diff --git a/ui/metrics/Android.bp b/ui/metrics/Android.bp
index 8188a69..95c8f5c 100644
--- a/ui/metrics/Android.bp
+++ b/ui/metrics/Android.bp
@@ -23,10 +23,10 @@
     ],
     srcs: [
         "metrics.go",
-        "time.go",
+        "event.go",
     ],
     testSrcs: [
-        "time_test.go",
+        "event_test.go",
     ],
 }
 
diff --git a/ui/metrics/time.go b/ui/metrics/event.go
similarity index 80%
rename from ui/metrics/time.go
rename to ui/metrics/event.go
index 4016563..5a62847 100644
--- a/ui/metrics/time.go
+++ b/ui/metrics/event.go
@@ -25,7 +25,7 @@
 // for testing purpose only
 var _now = now
 
-type timeEvent struct {
+type event struct {
 	desc string
 	name string
 
@@ -33,26 +33,26 @@
 	start time.Time
 }
 
-type TimeTracer interface {
+type EventTracer interface {
 	Begin(name, desc string, thread tracer.Thread)
 	End(thread tracer.Thread) soong_metrics_proto.PerfInfo
 }
 
-type timeTracerImpl struct {
-	activeEvents []timeEvent
+type eventTracerImpl struct {
+	activeEvents []event
 }
 
-var _ TimeTracer = &timeTracerImpl{}
+var _ EventTracer = &eventTracerImpl{}
 
 func now() time.Time {
 	return time.Now()
 }
 
-func (t *timeTracerImpl) Begin(name, desc string, _ tracer.Thread) {
-	t.activeEvents = append(t.activeEvents, timeEvent{name: name, desc: desc, start: _now()})
+func (t *eventTracerImpl) Begin(name, desc string, _ tracer.Thread) {
+	t.activeEvents = append(t.activeEvents, event{name: name, desc: desc, start: _now()})
 }
 
-func (t *timeTracerImpl) End(tracer.Thread) soong_metrics_proto.PerfInfo {
+func (t *eventTracerImpl) End(tracer.Thread) soong_metrics_proto.PerfInfo {
 	if len(t.activeEvents) < 1 {
 		panic("Internal error: No pending events for endAt to end!")
 	}
diff --git a/ui/metrics/time_test.go b/ui/metrics/event_test.go
similarity index 88%
rename from ui/metrics/time_test.go
rename to ui/metrics/event_test.go
index d73080a..6fc0b50 100644
--- a/ui/metrics/time_test.go
+++ b/ui/metrics/event_test.go
@@ -28,14 +28,14 @@
 	_now = func() time.Time { return startTime.Add(dur) }
 	defer func() { _now = initialNow }()
 
-	timeTracer := &timeTracerImpl{}
-	timeTracer.activeEvents = append(timeTracer.activeEvents, timeEvent{
+	eventTracer := &eventTracerImpl{}
+	eventTracer.activeEvents = append(eventTracer.activeEvents, event{
 		desc:  "test",
 		name:  "test",
 		start: startTime,
 	})
 
-	perf := timeTracer.End(tracer.Thread(0))
+	perf := eventTracer.End(tracer.Thread(0))
 	if perf.GetRealTime() != uint64(dur.Nanoseconds()) {
 		t.Errorf("got %d, want %d nanoseconds for event duration", perf.GetRealTime(), dur.Nanoseconds())
 	}
diff --git a/ui/metrics/metrics.go b/ui/metrics/metrics.go
index 35d1976..7a3726b 100644
--- a/ui/metrics/metrics.go
+++ b/ui/metrics/metrics.go
@@ -36,14 +36,14 @@
 )
 
 type Metrics struct {
-	metrics    soong_metrics_proto.MetricsBase
-	TimeTracer TimeTracer
+	metrics     soong_metrics_proto.MetricsBase
+	EventTracer EventTracer
 }
 
 func New() (metrics *Metrics) {
 	m := &Metrics{
-		metrics:    soong_metrics_proto.MetricsBase{},
-		TimeTracer: &timeTracerImpl{},
+		metrics:     soong_metrics_proto.MetricsBase{},
+		EventTracer: &eventTracerImpl{},
 	}
 	return m
 }
