diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0d7016e..25485fd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,14 @@
+## 0.20.4+2
+
+* Support the latest release of `pkg/quiver` (0.26).
+* Bug fix: Some minor type fixes for strict runtimes (and Dart 2.0), namely:
+  * PropertyChangeNotifier merely `extends
+    ChangeNotifier` rather than `extends ChangeNotifier<PropertyChangeRecord>`.
+  * Introduce new `ListChangeRecord.NONE` and `MapChangeRecord.NONE`.
+
 ## 0.20.4+1
 
-* Support the latest release of `pkg/quiver`.
+* Support the latest release of `pkg/quiver` (0.25).
 
 ## 0.20.4
 
diff --git a/lib/src/change_notifier.dart b/lib/src/change_notifier.dart
index 40f5d4d..6ba9c9b 100644
--- a/lib/src/change_notifier.dart
+++ b/lib/src/change_notifier.dart
@@ -119,7 +119,7 @@
 /// [PropertyChangeNotifier] may be extended or used as a delegate. To use as
 /// a mixin, instead use with [PropertyChangeMixin]:
 ///     with ChangeNotifier<PropertyChangeRecord>, PropertyChangeMixin
-class PropertyChangeNotifier extends ChangeNotifier<PropertyChangeRecord> {
+class PropertyChangeNotifier extends ChangeNotifier {
   @override
   T notifyPropertyChange<T>(
     Symbol field,
diff --git a/lib/src/differs/list_differ.dart b/lib/src/differs/list_differ.dart
index 78abd75..bcb0dfd 100644
--- a/lib/src/differs/list_differ.dart
+++ b/lib/src/differs/list_differ.dart
@@ -206,7 +206,7 @@
   oldEnd -= suffixCount;
 
   if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0) {
-    return ChangeRecord.NONE;
+    return ListChangeRecord.NONE;
   }
 
   if (currentStart == currentEnd) {
diff --git a/lib/src/differs/map_differ.dart b/lib/src/differs/map_differ.dart
index c6041a4..146834e 100644
--- a/lib/src/differs/map_differ.dart
+++ b/lib/src/differs/map_differ.dart
@@ -17,7 +17,7 @@
   @override
   List<MapChangeRecord<K, V>> diff(Map<K, V> oldValue, Map<K, V> newValue) {
     if (identical(oldValue, newValue)) {
-      return ChangeRecord.NONE;
+      return MapChangeRecord.NONE;
     }
     final changes = <MapChangeRecord<K, V>>[];
     oldValue.forEach((oldK, oldV) {
diff --git a/lib/src/records/list_change_record.dart b/lib/src/records/list_change_record.dart
index cfbd005..8b8c41e 100644
--- a/lib/src/records/list_change_record.dart
+++ b/lib/src/records/list_change_record.dart
@@ -12,6 +12,9 @@
 /// the final list positions to figure out which item was added - this removes
 /// the need to incur costly GC on the most common operation (adding).
 class ListChangeRecord<E> implements ChangeRecord {
+  /// Signifies no changes occurred.
+  static const NONE = const <ListChangeRecord>[];
+
   /// How many elements were added at [index] (after removing elements).
   final int addedCount;
 
diff --git a/lib/src/records/map_change_record.dart b/lib/src/records/map_change_record.dart
index dfd528a..6c61115 100644
--- a/lib/src/records/map_change_record.dart
+++ b/lib/src/records/map_change_record.dart
@@ -6,6 +6,9 @@
 
 /// A [ChangeRecord] that denotes adding, removing, or updating a map.
 class MapChangeRecord<K, V> implements ChangeRecord {
+  /// Signifies no changes occurred.
+  static const NONE = const <MapChangeRecord>[];
+
   /// The map key that changed.
   final K key;
 
diff --git a/pubspec.yaml b/pubspec.yaml
index f20f030..d5b3a9d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: observable
-version: 0.20.4+1
+version: 0.20.4+2
 author: Dart Team <misc@dartlang.org>
 description: Support for marking objects as observable
 homepage: https://github.com/dart-lang/observable
diff --git a/test/differs/map_differ_test.dart b/test/differs/map_differ_test.dart
index b6ebb53..2875015 100644
--- a/test/differs/map_differ_test.dart
+++ b/test/differs/map_differ_test.dart
@@ -13,7 +13,7 @@
       final map = new Map<String, String>.fromIterable(
         new Iterable.generate(10, (i) => '$i'),
       );
-      expect(diff(map, map), ChangeRecord.NONE);
+      expect(diff(map, map), MapChangeRecord.NONE);
     });
 
     test('should emit no changes for maps with identical content', () {
@@ -23,7 +23,7 @@
       final map2 = new Map<String, String>.fromIterable(
         new Iterable.generate(10, (i) => '$i'),
       );
-      expect(diff(map1, map2), ChangeRecord.NONE);
+      expect(diff(map1, map2), MapChangeRecord.NONE);
     });
 
     test('should detect insertions', () {
