diff --git a/.travis.yml b/.travis.yml
index 264316d..a31bd64 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,7 +2,6 @@
 
 dart:
   - dev
-  - stable
 
 dart_task:
   - test: --platform vm
@@ -13,12 +12,6 @@
 branches:
   only: [master]
 
-matrix:
-  # Only run dartfmt checks with stable.
-  exclude:
-    - dart: dev
-      dart_task: dartfmt
-
 cache:
   directories:
     - $HOME/.pub-cache
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b676ee1..4f14f32 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.14.7-dev
+
+* Only the Dart 2 dev SDK (`>=2.0.0-dev.22.0`) is now supported.
+* Add support for `Map.{addEntries|entries}` for Dart 2.0.
+
 ## 1.14.6
 
 * Make `DefaultEquality`'s `equals()` and `hash()` methods take any `Object`
diff --git a/lib/src/canonicalized_map.dart b/lib/src/canonicalized_map.dart
index 117cd63..e586420 100644
--- a/lib/src/canonicalized_map.dart
+++ b/lib/src/canonicalized_map.dart
@@ -69,14 +69,10 @@
     other.forEach((key, value) => this[key] = value);
   }
 
-  // TODO: Dart 2.0 requires this method to be implemented.
-  void addEntries(Iterable<Object> entries) {
-    // Change Iterable<Object> to Iterable<MapEntry<K, V>> when
-    // the MapEntry class has been added.
-    throw new UnimplementedError('addEntries');
-  }
+  void addEntries(Iterable<MapEntry<K, V>> entries) =>
+      _base.addEntries(entries.map(
+          (e) => new MapEntry(_canonicalize(e.key), new Pair(e.key, e.value))));
 
-  // TODO: Dart 2.0 requires this method to be implemented.
   Map<K2, V2> cast<K2, V2>() {
     throw new UnimplementedError('cast');
   }
@@ -93,12 +89,8 @@
   bool containsValue(Object value) =>
       _base.values.any((pair) => pair.last == value);
 
-  // TODO: Dart 2.0 requires this method to be implemented.
-  Iterable<Null> get entries {
-    // Change Iterable<Null> to Iterable<MapEntry<K, V>> when
-    // the MapEntry class has been added.
-    throw new UnimplementedError('entries');
-  }
+  Iterable<MapEntry<K, V>> get entries =>
+      _base.entries.map((e) => new MapEntry(e.value.first, e.value.last));
 
   void forEach(void f(K key, V value)) {
     _base.forEach((key, pair) => f(pair.first, pair.last));
diff --git a/lib/src/typed_wrappers.dart b/lib/src/typed_wrappers.dart
index cef2a58..f713d0b 100644
--- a/lib/src/typed_wrappers.dart
+++ b/lib/src/typed_wrappers.dart
@@ -395,11 +395,8 @@
     _base.addAll(other);
   }
 
-  // TODO: Dart 2.0 requires this method to be implemented.
-  void addEntries(Iterable<Object> entries) {
-    // Change Iterable<Object> to Iterable<MapEntry<K, V>> when
-    // the MapEntry class has been added.
-    throw new UnimplementedError('addEntries');
+  void addEntries(Iterable<MapEntry<K, V>> entries) {
+    _base.addEntries(entries);
   }
 
   // TODO: Dart 2.0 requires this method to be implemented.
@@ -415,12 +412,7 @@
 
   bool containsValue(Object value) => _base.containsValue(value);
 
-  // TODO: Dart 2.0 requires this method to be implemented.
-  Iterable<Null> get entries {
-    // Change Iterable<Null> to Iterable<MapEntry<K, V>> when
-    // the MapEntry class has been added.
-    throw new UnimplementedError('entries');
-  }
+  Iterable<MapEntry<K, V>> get entries => _base.entries;
 
   void forEach(void f(K key, V value)) {
     _base.forEach((key, value) => f(key as K, value as V));
diff --git a/lib/src/wrappers.dart b/lib/src/wrappers.dart
index 1abfd45..cef99b7 100644
--- a/lib/src/wrappers.dart
+++ b/lib/src/wrappers.dart
@@ -450,11 +450,8 @@
     _base.addAll(other);
   }
 
-  // TODO: Dart 2.0 requires this method to be implemented.
-  void addEntries(Iterable<Object> entries) {
-    // Change Iterable<Object> to Iterable<MapEntry<K, V>> when
-    // the MapEntry class has been added.
-    throw new UnimplementedError('addEntries');
+  void addEntries(Iterable<MapEntry<K, V>> entries) {
+    _base.addEntries(entries);
   }
 
   void clear() {
@@ -470,12 +467,7 @@
 
   bool containsValue(Object value) => _base.containsValue(value);
 
-  // TODO: Dart 2.0 requires this method to be implemented.
-  Iterable<Null> get entries {
-    // Change Iterable<Null> to Iterable<MapEntry<K, V>> when
-    // the MapEntry class has been added.
-    throw new UnimplementedError('entries');
-  }
+  Iterable<MapEntry<K, V>> get entries => _base.entries;
 
   void forEach(void f(K key, V value)) {
     _base.forEach(f);
diff --git a/pubspec.yaml b/pubspec.yaml
index e97a358..972f6c6 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,9 +1,12 @@
 name: collection
-version: 1.14.6
+version: 1.14.7-dev
 author: Dart Team <misc@dartlang.org>
 description: Collections and utilities functions and classes related to collections.
 homepage: https://www.github.com/dart-lang/collection
+
 environment:
-  sdk: '>=1.21.0 <2.0.0'
+  # Required for Dart 2.0 collection changes.
+  sdk: '>=2.0.0-dev.22.0 <2.0.0'
+
 dev_dependencies:
   test: '^0.12.0'
diff --git a/test/canonicalized_map_test.dart b/test/canonicalized_map_test.dart
index f48778d..9586cf3 100644
--- a/test/canonicalized_map_test.dart
+++ b/test/canonicalized_map_test.dart
@@ -7,9 +7,10 @@
 
 void main() {
   group("with an empty canonicalized map", () {
-    var map;
+    CanonicalizedMap<int, String, String> map;
+
     setUp(() {
-      map = new CanonicalizedMap<int, String, String>(int.parse,
+      map = new CanonicalizedMap(int.parse,
           isValidKey: (s) => new RegExp(r"^\d+$").hasMatch(s as String));
     });
 
@@ -130,6 +131,29 @@
 
       expect(map.values, equals(["value 01", "value 2", "value 03"]));
     });
+
+    test("entries returns all key-value pairs in the map", () {
+      map.addAll({
+        "1": "value 1",
+        "01": "value 01",
+        "2": "value 2",
+      });
+
+      var entries = map.entries.toList();
+      expect(entries[0].key, "01");
+      expect(entries[0].value, "value 01");
+      expect(entries[1].key, "2");
+      expect(entries[1].value, "value 2");
+    });
+
+    test("addEntries adds key-value pairs to the map", () {
+      map.addEntries([
+        new MapEntry("1", "value 1"),
+        new MapEntry("01", "value 01"),
+        new MapEntry("2", "value 2"),
+      ]);
+      expect(map, {"01": "value 01", "2": "value 2"});
+    });
   });
 
   group("CanonicalizedMap builds an informative string representation", () {
