diff --git a/internal/apidiff/apidiff.go b/internal/apidiff/apidiff.go
index dc0f0e7..76669d8 100644
--- a/internal/apidiff/apidiff.go
+++ b/internal/apidiff/apidiff.go
@@ -24,10 +24,14 @@
 func Changes(old, new *types.Package) Report {
 	d := newDiffer(old, new)
 	d.checkPackage()
-	return Report{
-		Incompatible: d.incompatibles.collect(),
-		Compatible:   d.compatibles.collect(),
+	r := Report{}
+	for _, m := range d.incompatibles.collect() {
+		r.Changes = append(r.Changes, Change{Message: m, Compatible: false})
 	}
+	for _, m := range d.compatibles.collect() {
+		r.Changes = append(r.Changes, Change{Message: m, Compatible: true})
+	}
+	return r
 }
 
 type differ struct {
diff --git a/internal/apidiff/apidiff_test.go b/internal/apidiff/apidiff_test.go
index 3991a9a..4925509 100644
--- a/internal/apidiff/apidiff_test.go
+++ b/internal/apidiff/apidiff_test.go
@@ -37,11 +37,13 @@
 
 	report := Changes(oldpkg.Types, newpkg.Types)
 
-	if !reflect.DeepEqual(report.Incompatible, wanti) {
-		t.Errorf("incompatibles: got %v\nwant %v\n", report.Incompatible, wanti)
+	got := report.messages(false)
+	if !reflect.DeepEqual(got, wanti) {
+		t.Errorf("incompatibles: got %v\nwant %v\n", got, wanti)
 	}
-	if !reflect.DeepEqual(report.Compatible, wantc) {
-		t.Errorf("compatibles: got %v\nwant %v\n", report.Compatible, wantc)
+	got = report.messages(true)
+	if !reflect.DeepEqual(got, wantc) {
+		t.Errorf("compatibles: got %v\nwant %v\n", got, wantc)
 	}
 }
 
diff --git a/internal/apidiff/report.go b/internal/apidiff/report.go
index fd346b1..ce79e27 100644
--- a/internal/apidiff/report.go
+++ b/internal/apidiff/report.go
@@ -8,7 +8,23 @@
 
 // Report describes the changes detected by Changes.
 type Report struct {
-	Incompatible, Compatible []string
+	Changes []Change
+}
+
+// A Change describes a single API change.
+type Change struct {
+	Message    string
+	Compatible bool
+}
+
+func (r Report) messages(compatible bool) []string {
+	var msgs []string
+	for _, c := range r.Changes {
+		if c.Compatible == compatible {
+			msgs = append(msgs, c.Message)
+		}
+	}
+	return msgs
 }
 
 func (r Report) String() string {
@@ -28,13 +44,13 @@
 
 func (r Report) TextIncompatible(w io.Writer, withHeader bool) error {
 	if withHeader {
-		return r.writeMessages(w, "Incompatible changes:", r.Incompatible)
+		return r.writeMessages(w, "Incompatible changes:", r.messages(false))
 	}
-	return r.writeMessages(w, "", r.Incompatible)
+	return r.writeMessages(w, "", r.messages(false))
 }
 
 func (r Report) TextCompatible(w io.Writer) error {
-	return r.writeMessages(w, "Compatible changes:", r.Compatible)
+	return r.writeMessages(w, "Compatible changes:", r.messages(true))
 }
 
 func (r Report) writeMessages(w io.Writer, header string, msgs []string) error {
