diff --git a/.gitignore b/.gitignore
index 0256a9b..96db218 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
 .buildlog
 .DS_Store
 .idea
+.dart_tool/
 .pub/
 .settings/
 build/
diff --git a/.travis.yml b/.travis.yml
index 9c3a39f..aaed16a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,2 +1,8 @@
 language: dart
+dart:
+  - dev
 script: ./tool/travis.sh
+
+branches:
+  only:
+    - master
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e681ff..af30e42 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
 # Changelog
 
+## 0.2.0
+- upgraded to support Dart 2
+
 ## 0.1.1
 - fixed an issue with global_packages enumeration
 
diff --git a/README.md b/README.md
index 7111ea6..9208f60 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,6 @@
 [![pub package](http://img.shields.io/pub/v/pub_cache.svg)](https://pub.dartlang.org/packages/pub_cache)
 [![Build Status](https://travis-ci.org/dart-lang/pub_cache.svg)](https://travis-ci.org/dart-lang/pub_cache)
 [![Build status](https://ci.appveyor.com/api/projects/status/w75vsabfhgmo93hq/branch/master?svg=true)](https://ci.appveyor.com/project/devoncarew/pub-cache/branch/master)
-[![Coverage Status](https://img.shields.io/coveralls/dart-lang/pub_cache.svg)](https://coveralls.io/r/dart-lang/pub_cache?branch=master)
 
 ## How do I use it?
 
diff --git a/lib/pub_cache.dart b/lib/pub_cache.dart
index 8dd77f6..6979ae6 100644
--- a/lib/pub_cache.dart
+++ b/lib/pub_cache.dart
@@ -36,15 +36,17 @@
 
   /// Create a pubcache instance. [dir] defaults to the default platform pub
   /// cache location.
-  PubCache([Directory dir]) :
-      location = dir == null ? getSystemCacheLocation() : dir {
+  PubCache([Directory dir])
+      : location = dir == null ? getSystemCacheLocation() : dir {
     _parse();
   }
 
   /// Return the contents of `bin/` - the scripts for the activated applications.
   List<File> getBinScripts() {
     Directory dir = _getSubDir(location, 'bin');
-    return dir.existsSync() ? dir.listSync() : [];
+    return dir.existsSync()
+        ? dir.listSync().where((entity) => entity is File).cast<File>().toList()
+        : <File>[];
   }
 
   /// Return applications that have been installed via `pub global activate`.
@@ -57,7 +59,7 @@
   /// Return the list of package names (not versions) that are available in the
   /// cache.
   List<String> getCachedPackages() =>
-      new Set.from(getPackageRefs().map((p) => p.name)).toList();
+      new Set<String>.from(getPackageRefs().map((p) => p.name)).toList();
 
   /// Return all available cached versions for a given package.
   List<PackageRef> getAllPackageVersions(String packageName) =>
@@ -67,7 +69,8 @@
   /// cache. This method will prefer to return only release verions. If
   /// [includePreRelease] is true, then the very latest verision will be
   /// returned, include pre-release versions.
-  PackageRef getLatestVersion(String packageName, {bool includePreRelease: false}) {
+  PackageRef getLatestVersion(String packageName,
+      {bool includePreRelease: false}) {
     List<PackageRef> refs = getAllPackageVersions(packageName);
 
     if (refs.isEmpty) return null;
@@ -104,23 +107,25 @@
     }
 
     // Scan hosted packages - just pub.dartlang.org for now.
-    _packageRefs = [];
+    _packageRefs = <PackageRef>[];
 
-    Directory dartlangDir = new Directory(
-        path.join(location.path, 'hosted', 'pub.dartlang.org'));
+    Directory dartlangDir =
+        new Directory(path.join(location.path, 'hosted', 'pub.dartlang.org'));
     if (dartlangDir.existsSync()) {
-      _packageRefs = dartlangDir.listSync()
+      _packageRefs.addAll(dartlangDir
+          .listSync()
           .where((dir) => dir is Directory)
-          .map((dir) => new DirectoryPackageRef('hosted', dir))
-          .toList();
+          .map((dir) => new DirectoryPackageRef('hosted', dir)));
     }
 
     // Scan for git packages (ignore the git/cache directory).
     // ace-a1a140cc933e7d44d2955a6d6033308754bb9235
     Directory gitDir = new Directory(path.join(location.path, 'git'));
     if (gitDir.existsSync()) {
-      Iterable gitRefs = gitDir.listSync()
-          .where((dir) => dir is Directory && path.basename(dir.path) != 'cache')
+      Iterable<PackageRef> gitRefs = gitDir
+          .listSync()
+          .where(
+              (dir) => dir is Directory && path.basename(dir.path) != 'cache')
           .map((dir) => new GitDirectoryPackageRef(dir));
       _packageRefs.addAll(gitRefs);
     }
@@ -175,7 +180,8 @@
       Map m = packages[key];
       String source = m['source'];
       if (source == 'git') {
-        return new PackageRefImpl.git(key, m['version'], m['description'], (curRef) {
+        return new PackageRefImpl.git(key, m['version'], m['description'],
+            (curRef) {
           for (PackageRef ref in _cache.getPackageRefs()) {
             if (ref == curRef) return ref.resolve();
           }
@@ -202,8 +208,10 @@
 abstract class PackageRef {
   /// The type of the package reference. Valid types include `hosted` and `git`.
   String get sourceType;
+
   /// The name of the package.
   String get name;
+
   /// The version of the package.
   Version get version;
 
@@ -212,9 +220,9 @@
   Package resolve();
 
   bool operator ==(other) {
-    return this.sourceType == other.sourceType
-        && this.name == other.name
-        && this.version == other.version;
+    return this.sourceType == other.sourceType &&
+        this.name == other.name &&
+        this.version == other.version;
   }
 
   String toString() => '${name} ${version}';
diff --git a/lib/src/impl.dart b/lib/src/impl.dart
index 59bad03..b8e83b2 100644
--- a/lib/src/impl.dart
+++ b/lib/src/impl.dart
@@ -19,13 +19,15 @@
 
   Function _resolver;
 
-  PackageRefImpl(this.sourceType, this.name, String ver) :
-      version = new Version.parse(ver);
+  PackageRefImpl(this.sourceType, this.name, String ver)
+      : version = new Version.parse(ver);
 
-  PackageRefImpl.hosted(this.name, String ver, this._resolver) :
-    sourceType = 'hosted', version = new Version.parse(ver);
+  PackageRefImpl.hosted(this.name, String ver, this._resolver)
+      : sourceType = 'hosted',
+        version = new Version.parse(ver);
 
-  factory PackageRefImpl.git(String name, String ver, Map description, Function resolver) {
+  factory PackageRefImpl.git(
+      String name, String ver, Map description, Function resolver) {
     return new GitPackageRefImpl(name, ver, description, resolver);
   }
 
@@ -39,8 +41,9 @@
 class GitPackageRefImpl extends PackageRefImpl {
   final Map _description;
 
-  GitPackageRefImpl(String name, String ver, this._description, Function resolver) :
-      super('git', name, ver) {
+  GitPackageRefImpl(
+      String name, String ver, this._description, Function resolver)
+      : super('git', name, ver) {
     _resolver = resolver;
   }
 
@@ -56,8 +59,8 @@
 class PathPackageRefImpl extends PackageRefImpl {
   final Map _description;
 
-  PathPackageRefImpl(String name, String ver, this._description) :
-      super('path', name, ver);
+  PathPackageRefImpl(String name, String ver, this._description)
+      : super('path', name, ver);
 
   /// The path to the local package.
   String get path => _description['path'];
diff --git a/pubspec.yaml b/pubspec.yaml
index bd63774..38f4856 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,11 +1,11 @@
 name: pub_cache
-version: 0.1.1
+version: 0.2.0
 description: A library to reflect on the local pub cache.
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/pub_cache
 
 environment:
-  sdk: '>=1.8.0 <2.0.0'
+  sdk: '>=2.0.0-dev.17.0 <2.0.0'
 
 dependencies:
   path: '^1.0.0'
diff --git a/test/pub_cache_test.dart b/test/pub_cache_test.dart
index d63a5c1..b6c03fa 100644
--- a/test/pub_cache_test.dart
+++ b/test/pub_cache_test.dart
@@ -18,7 +18,8 @@
   group('PubCache', () {
     tearDown(() {
       Directory cacheDir = PubCache.getSystemCacheLocation();
-      var globalDir = new Directory(path.join(cacheDir.path, "global_packages"));
+      var globalDir =
+          new Directory(path.join(cacheDir.path, "global_packages"));
       var file = new File(path.join(globalDir.path, "nonsense"));
       if (file.existsSync()) {
         file.deleteSync();
@@ -38,7 +39,8 @@
 
       // Put a file in global_packages
       Directory cacheDir = PubCache.getSystemCacheLocation();
-      var globalDir = new Directory(path.join(cacheDir.path, "global_packages"));
+      var globalDir =
+          new Directory(path.join(cacheDir.path, "global_packages"));
       var file = new File(path.join(globalDir.path, "nonsense"));
       file.writeAsStringSync("pub_cache test suite");
 
@@ -88,7 +90,8 @@
 
     test('getLatestVersion.dev', () {
       PubCache cache = new PubCache();
-      expect(cache.getLatestVersion('path', includePreRelease: true), isNotNull);
+      expect(
+          cache.getLatestVersion('path', includePreRelease: true), isNotNull);
     });
   });
 
diff --git a/tool/travis.sh b/tool/travis.sh
index 9c9c989..02f2d88 100755
--- a/tool/travis.sh
+++ b/tool/travis.sh
@@ -8,7 +8,7 @@
 set -e
 
 # Activate some packages for use while running tests.
-pub global activate dart_coveralls
+pub global activate tuneup
 pub global activate path 1.3.0
 pub global activate path
 pub global activate --source git https://github.com/dart-lang/test.git
@@ -16,18 +16,12 @@
 
 # Verify that the libraries are error free.
 dartanalyzer --fatal-warnings \
-  example/list.dart \
-  lib/pub_cache.dart \
-  test/all.dart
+  example/ \
+  lib/ \
+  test/
+
+# Ensure the example works in Dart 2.
+dart --preview-dart-2 example/list.dart
 
 # Run the tests.
-dart test/all.dart
-
-# Gather and send coverage data.
-if [ "$COVERALLS_TOKEN" ]; then
-  pub global run dart_coveralls report \
-    --token $COVERALLS_TOKEN \
-    --retry 2 \
-    --exclude-test-files \
-    test/all.dart
-fi
+dart --preview-dart-2 test/all.dart
