diff --git a/.gitignore b/.gitignore
index 07781a6..db88a57 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@
 packages
 pubspec.lock
 .pub/
+.dart_tool/
 docs/
 build/
 .settings/
diff --git a/.travis.yml b/.travis.yml
index 5c23091..ad23559 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,6 @@
 
 dart:
   - dev
-  - stable
 
 before_install:
   - export DISPLAY=:99.0
diff --git a/lib/forwarder.dart b/lib/forwarder.dart
index a136237..298d9b4 100644
--- a/lib/forwarder.dart
+++ b/lib/forwarder.dart
@@ -5,7 +5,7 @@
 
 import 'dart:async'
     show Future, Stream, StreamController, StreamSink, StreamSubscription;
-import 'dart:convert' show JSON;
+import 'dart:convert' show jsonDecode, jsonEncode;
 
 import 'package:logging/logging.dart' show Logger;
 
@@ -48,7 +48,7 @@
   }
 
   Future _onClientDataHandler(String data) async {
-    var json = JSON.decode(data);
+    var json = jsonDecode(data);
     var response = {'id': json['id']};
     _log.info('Forwarding to debugger: $data');
     try {
@@ -87,7 +87,7 @@
       response['error'] = e.toString();
     }
     _log.info('forwarding response: $response');
-    _out.add(JSON.encode(response));
+    _out.add(jsonEncode(response));
   }
 
   void _onClientErrorHandler(Object error, StackTrace stackTrace) {
@@ -110,7 +110,7 @@
     if (event.params != null) {
       json['params'] = event.params;
     }
-    _out.add(JSON.encode(json));
+    _out.add(jsonEncode(json));
   }
 
   void _onDebuggerErrorHandler(Object error, StackTrace stackTrace) {
diff --git a/lib/multiplex.dart b/lib/multiplex.dart
index 992564c..3ffa326 100644
--- a/lib/multiplex.dart
+++ b/lib/multiplex.dart
@@ -4,7 +4,7 @@
 library wip.multiplex;
 
 import 'dart:async' show Future;
-import 'dart:convert' show JSON;
+import 'dart:convert' show jsonEncode;
 import 'dart:io' show HttpServer, InternetAddress;
 
 import 'package:logging/logging.dart' show Logger;
@@ -96,7 +96,7 @@
   Future<shelf.Response> _json(shelf.Request request) async {
     var path = request.url.pathSegments;
     if (path.length == 1 && path[0] == 'json') {
-      var resp = JSON.encode(await chrome.getTabs(), toEncodable: _jsonEncode);
+      var resp = jsonEncode(await chrome.getTabs(), toEncodable: _jsonEncode);
       _log.info('json: $resp');
       return new shelf.Response.ok(resp,
           headers: {'Content-Type': 'application/json'});
diff --git a/lib/webkit_inspection_protocol.dart b/lib/webkit_inspection_protocol.dart
index 1596c1b..099664f 100644
--- a/lib/webkit_inspection_protocol.dart
+++ b/lib/webkit_inspection_protocol.dart
@@ -43,8 +43,8 @@
   // TODO(DrMarcII): consider changing this to return Stream<ChromeTab>.
   Future<List<ChromeTab>> getTabs() async {
     var response = await getUrl('/json');
-    var respBody = await UTF8.decodeStream(response);
-    List<Map<String, String>> data = JSON.decode(respBody);
+    var respBody = await utf8.decodeStream(response);
+    List<Map<String, String>> data = jsonDecode(respBody);
     return data.map((m) => new ChromeTab(m)).toList();
   }
 
@@ -171,7 +171,7 @@
     _runtime = new WipRuntime(this);
 
     _ws.listen((data) {
-      var json = JSON.decode(data);
+      var json = jsonDecode(data);
 
       if (json.containsKey('id')) {
         _handleResponse(json);
@@ -197,7 +197,7 @@
       json['params'] = params;
     }
     _completers[json['id']] = completer;
-    _ws.add(JSON.encode(json));
+    _ws.add(jsonEncode(json));
     return completer.future;
   }
 
diff --git a/pubspec.yaml b/pubspec.yaml
index 1fd13bf..b31b86e 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -8,7 +8,8 @@
 - Marc Fisher <fisherii@google.com>
 
 environment:
-  sdk: '>=1.10.0 <2.0.0'
+  sdk: '>=2.0.0-dev.17.0 <2.0.0'
+
 dependencies:
   args: '>=0.13.0 <2.0.0'
   logging: '^0.11.0'
