diff --git a/.gitignore b/.gitignore
index cc69f5b..76b960e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,5 +5,7 @@
 .project
 .settings
 build/
+doc/api/
 packages
-pubspec.lock
\ No newline at end of file
+pubspec.lock
+.packages
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a0047f2..e4cd8cd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## unreleased
+
+- Use the new `Platform.resolvedExecutable` API to locate the SDK
+
 ## 0.0.1+3
 
 - Find SDK properly when invoked from inside SDK tests.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6f5e0ea..286d61c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -23,7 +23,7 @@
 ### File headers
 All files in the project must start with the following header.
 
-    // Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+    // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
     // for details. All rights reserved. Use of this source code is governed by a
     // BSD-style license that can be found in the LICENSE file.
 
diff --git a/README.md b/README.md
index bcff2f3..bf2dcf9 100644
--- a/README.md
+++ b/README.md
@@ -17,11 +17,11 @@
 import 'package:path/path.dart' as path;
 
 main(args) {
-  // Get sdk dir from cli_util
-  Directory sdkDir = getSdkDir(args);
+  // Get sdk dir from cli_util.
+  String sdkPath = getSdkPath();
   
   // Do stuff... For example, print version string
-  File versionFile = new File(path.join(sdkDir.path, 'version'));
+  File versionFile = new File(path.join(sdkPath, 'version'));
   print(versionFile.readAsStringSync());
 }
 ```
diff --git a/.analysis_options b/analysis_options.yaml
similarity index 100%
rename from .analysis_options
rename to analysis_options.yaml
diff --git a/lib/cli_util.dart b/lib/cli_util.dart
index 6533e9f..62191ec 100644
--- a/lib/cli_util.dart
+++ b/lib/cli_util.dart
@@ -6,11 +6,16 @@
 
 import 'dart:io';
 
-import 'package:path/path.dart' as p;
-import 'package:which/which.dart';
+import 'package:path/path.dart' as path;
 
-/// Return the path to the current Dart SDK. This will return `null` if we are
-/// unable to locate the Dart SDK.
+/// Return the path to the current Dart SDK.
+///
+/// This first checks for an explicit SDK listed on the command-line
+/// (`--dart-sdk`). It then looks in any `DART_SDK` environment variable. Next,
+/// it looks relative to the Dart VM executable. Last, it uses the
+/// [Platform.resolvedExecutable] API.
+///
+/// Callers should generally prefer using the [getSdkPath] function.
 Directory getSdkDir([List<String> cliArgs]) {
   // Look for --dart-sdk on the command line.
   if (cliArgs != null) {
@@ -40,36 +45,15 @@
   // Handle the case where Platform.executable is a sibling of the SDK directory
   // (this happens during internal testing).
   sdkDirectory =
-      new Directory(p.join(platformExecutable.parent.path, 'dart-sdk'));
+      new Directory(path.join(platformExecutable.parent.path, 'dart-sdk'));
   if (_isSdkDir(sdkDirectory)) return sdkDirectory;
 
-  // Try and locate the VM using 'which'.
-  String executable = whichSync('dart', orElse: () => null);
-
-  if (executable != null) {
-    // In case Dart is symlinked (e.g. homebrew on Mac) follow symbolic links.
-    Link link = new Link(executable);
-    if (link.existsSync()) {
-      executable = link.resolveSymbolicLinksSync();
-    }
-
-    Link parentLink = new Link(p.dirname(executable));
-    if (parentLink.existsSync()) {
-      executable = p.join(
-          parentLink.resolveSymbolicLinksSync(), p.basename(executable));
-    }
-
-    File dartVm = new File(executable);
-    Directory dir = dartVm.parent.parent;
-    if (_isSdkDir(dir)) return dir;
-  }
-
-  return null;
+  // Use `Platform.resolvedExecutable`.
+  return new Directory(getSdkPath());
 }
 
-bool _isSdkDir(Directory dir) => _joinFile(dir, ['version']).existsSync();
+/// Return the path to the current Dart SDK.
+String getSdkPath() => path.dirname(path.dirname(Platform.resolvedExecutable));
 
-File _joinFile(Directory dir, List<String> files) {
-  String pathFragment = files.join(Platform.pathSeparator);
-  return new File("${dir.path}${Platform.pathSeparator}${pathFragment}");
-}
+bool _isSdkDir(Directory dir) =>
+    FileSystemEntity.isDirectorySync(path.join(dir.path, 'version'));
diff --git a/pubspec.yaml b/pubspec.yaml
index 560d428..1afebf3 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,12 +1,14 @@
 name: cli_util
-version: 0.0.1+3
+version: 0.1.0-dev.1
 author: Dart Team <misc@dartlang.org>
 description: A library to help in building Dart command-line apps.
 homepage: https://github.com/dart-lang/cli_util
+
 environment:
-  sdk: '>=1.0.0 <2.0.0'
+  sdk: '>=1.11.0 <2.0.0'
+
 dependencies:
   path: '>=1.0.0 <2.0.0'
-  which: '>=0.1.2 <0.2.0'
+
 dev_dependencies:
-  unittest: '>=0.11.0 <0.12.0'
+  test: ^0.12.0
diff --git a/test/cli_util_test.dart b/test/cli_util_test.dart
index bf092e7..7cbdcf9 100644
--- a/test/cli_util_test.dart
+++ b/test/cli_util_test.dart
@@ -3,7 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:cli_util/cli_util.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
+
+main() => defineTests();
 
 void defineTests() {
   group('getSdkDir', () {
@@ -11,14 +13,15 @@
       expect(getSdkDir(['--dart-sdk', '/dart/sdk']).path, equals('/dart/sdk'));
       expect(getSdkDir(['--dart-sdk=/dart/sdk']).path, equals('/dart/sdk'));
     });
+
     test('finds the SDK without cli args', () {
       expect(getSdkDir(), isNotNull);
     });
   });
-}
 
-main() {
-  groupSep = ' | ';
-
-  defineTests();
+  group('getSdkPath', () {
+    test('sdkPath', () {
+      expect(getSdkPath(), isNotNull);
+    });
+  });
 }
diff --git a/tool/travis.sh b/tool/travis.sh
index e8e10b7..0b0aef9 100755
--- a/tool/travis.sh
+++ b/tool/travis.sh
@@ -23,4 +23,4 @@
     --retry 2 \
     --exclude-test-files \
     test/cli_util_test.dart
-fi
\ No newline at end of file
+fi
