diff --git a/.travis.yml b/.travis.yml
index 91b73d0..c15fd33 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,8 +2,6 @@
 
 dart:
 - dev
-- stable
-
 dart_task:
 - test: --platform vm,firefox
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4a26b86..ad6d777 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 1.2.1
+
+* Updated SDK version to 2.0.0-dev.17.0
+
 # 1.2.0
 
 * Add a `getParameter()` parameter to `new AuthorizationCodeGrant()`, `new
diff --git a/lib/src/credentials.dart b/lib/src/credentials.dart
index 4bd22a1..f40b26d 100644
--- a/lib/src/credentials.dart
+++ b/lib/src/credentials.dart
@@ -119,7 +119,7 @@
 
     var parsed;
     try {
-      parsed = JSON.decode(json);
+      parsed = jsonDecode(json);
     } on FormatException {
       validate(false, 'invalid JSON');
     }
@@ -164,7 +164,7 @@
   ///
   /// Nothing is guaranteed about the output except that it's valid JSON and
   /// compatible with [Credentials.toJson].
-  String toJson() => JSON.encode({
+  String toJson() => jsonEncode({
         'accessToken': accessToken,
         'refreshToken': refreshToken,
         'tokenEndpoint':
diff --git a/lib/src/parameters.dart b/lib/src/parameters.dart
index ccbf23e..61a9659 100644
--- a/lib/src/parameters.dart
+++ b/lib/src/parameters.dart
@@ -24,7 +24,7 @@
         'Content-Type was "$contentType", expected "application/json"');
   }
 
-  var untypedParameters = JSON.decode(body);
+  var untypedParameters = jsonDecode(body);
   if (untypedParameters is! Map) {
     throw new FormatException(
         'Parameters must be a map, was "$untypedParameters"');
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index 150fa17..6c3453f 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -11,5 +11,5 @@
 
 String basicAuthHeader(String identifier, String secret) {
   var userPass = Uri.encodeFull(identifier) + ":" + Uri.encodeFull(secret);
-  return "Basic " + BASE64.encode(ASCII.encode(userPass));
+  return "Basic " + base64Encode(ascii.encode(userPass));
 }
diff --git a/pubspec.yaml b/pubspec.yaml
index 8c49603..1b84732 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: oauth2
-version: 1.2.0
+version: 1.2.1
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/oauth2
 description: >
@@ -7,7 +7,7 @@
   behalf of a user, and making authorized HTTP requests with the user's
   OAuth2 credentials.
 environment:
-  sdk: '>=1.13.0 <2.0.0'
+  sdk: '>=2.0.0-dev.17.0 <2.0.0'
 dependencies:
   collection: '^1.5.0'
   http: '>=0.11.0 <0.12.0'
diff --git a/test/authorization_code_grant_test.dart b/test/authorization_code_grant_test.dart
index 137755c..ec6e71b 100644
--- a/test/authorization_code_grant_test.dart
+++ b/test/authorization_code_grant_test.dart
@@ -157,7 +157,7 @@
             containsPair("Authorization", "Basic aWRlbnRpZmllcjpzZWNyZXQ="));
 
         return new Future.value(new http.Response(
-            JSON.encode({
+            jsonEncode({
               'access_token': 'access token',
               'token_type': 'bearer',
             }),
@@ -199,7 +199,7 @@
             containsPair("Authorization", "Basic aWRlbnRpZmllcjpzZWNyZXQ="));
 
         return new Future.value(new http.Response(
-            JSON.encode({
+            jsonEncode({
               'access_token': 'access token',
               'token_type': 'bearer',
             }),
@@ -244,7 +244,7 @@
             }));
 
         return new Future.value(new http.Response(
-            JSON.encode({
+            jsonEncode({
               'access_token': 'access token',
               'token_type': 'bearer',
             }),
@@ -274,7 +274,7 @@
             }));
 
         return new Future.value(new http.Response(
-            JSON.encode({
+            jsonEncode({
               'access_token': 'access token',
               'token_type': 'bearer',
             }),
diff --git a/test/client_test.dart b/test/client_test.dart
index 7f59803..c7b4bbe 100644
--- a/test/client_test.dart
+++ b/test/client_test.dart
@@ -46,7 +46,7 @@
         expect(request.method, equals('POST'));
         expect(request.url.toString(), equals(tokenEndpoint.toString()));
         return new Future.value(new http.Response(
-            JSON.encode(
+            jsonEncode(
                 {'access_token': 'new access token', 'token_type': 'bearer'}),
             200,
             headers: {'content-type': 'application/json'}));
@@ -93,7 +93,7 @@
         expect(request.method, equals('POST'));
         expect(request.url.toString(), equals(tokenEndpoint.toString()));
         return new Future.value(new http.Response(
-            JSON.encode(
+            jsonEncode(
                 {'access_token': 'new access token', 'token_type': 'bearer'}),
             200,
             headers: {'content-type': 'application/json'}));
diff --git a/test/credentials_test.dart b/test/credentials_test.dart
index fd77efa..039a060 100644
--- a/test/credentials_test.dart
+++ b/test/credentials_test.dart
@@ -81,7 +81,7 @@
               "Basic aWQlQzMlQUJudCVDNCVBQmZpZXI6cyVDMyVBQmNyZXQ="));
 
       return new Future.value(new http.Response(
-          JSON.encode({
+          jsonEncode({
             'access_token': 'new access token',
             'token_type': 'bearer',
             'refresh_token': 'new refresh token'
@@ -105,7 +105,7 @@
     httpClient.expectRequest((http.Request request) {
       expect(request.bodyFields['scope'], equals('scope1,scope2'));
       return new Future.value(new http.Response(
-          JSON.encode({
+          jsonEncode({
             'access_token': 'new access token',
             'token_type': 'bearer',
             'refresh_token': 'new refresh token'
@@ -137,7 +137,7 @@
           }));
 
       return new Future.value(new http.Response(
-          JSON.encode({
+          jsonEncode({
             'access_token': 'new access token',
             'token_type': 'bearer',
             'refresh_token': 'new refresh token'
@@ -171,7 +171,7 @@
           }));
 
       return new Future.value(new http.Response(
-          JSON.encode({
+          jsonEncode({
             'access_token': 'new access token',
             'token_type': 'bearer',
             'refresh_token': 'new refresh token'
@@ -205,7 +205,7 @@
               "Basic aWQlQzMlQUJudCVDNCVBQmZpZXI6cyVDMyVBQmNyZXQ="));
 
       return new Future.value(new http.Response(
-          JSON.encode(
+          jsonEncode(
               {'access_token': 'new access token', 'token_type': 'bearer'}),
           200,
           headers: {'content-type': 'application/json'}));
@@ -238,7 +238,7 @@
           }));
 
       return new Future.value(new http.Response(
-          JSON.encode({
+          jsonEncode({
             'access_token': 'new access token',
             'token_type': 'bearer',
             'refresh_token': 'new refresh token'
@@ -258,7 +258,7 @@
 
   group("fromJson", () {
     oauth2.Credentials fromMap(Map map) =>
-        new oauth2.Credentials.fromJson(JSON.encode(map));
+        new oauth2.Credentials.fromJson(jsonEncode(map));
 
     test("should load the same credentials from toJson", () {
       // Round the expiration down to milliseconds since epoch, since that's
diff --git a/test/handle_access_token_response_test.dart b/test/handle_access_token_response_test.dart
index e32e13d..c54e54d 100644
--- a/test/handle_access_token_response_test.dart
+++ b/test/handle_access_token_response_test.dart
@@ -81,7 +81,7 @@
     test('with a non-string error_description causes a FormatException', () {
       expect(
           () => handleError(
-              body: JSON.encode(
+              body: jsonEncode(
                   {"error": "invalid_request", "error_description": 12})),
           throwsFormatException);
     });
@@ -89,14 +89,14 @@
     test('with a non-string error_uri causes a FormatException', () {
       expect(
           () => handleError(
-              body: JSON.encode({"error": "invalid_request", "error_uri": 12})),
+              body: jsonEncode({"error": "invalid_request", "error_uri": 12})),
           throwsFormatException);
     });
 
     test('with a string error_description causes a AuthorizationException', () {
       expect(
           () => handleError(
-                  body: JSON.encode({
+                  body: jsonEncode({
                 "error": "invalid_request",
                 "error_description": "description"
               })),
@@ -106,7 +106,7 @@
     test('with a string error_uri causes a AuthorizationException', () {
       expect(
           () => handleError(
-                  body: JSON.encode({
+                  body: jsonEncode({
                 "error": "invalid_request",
                 "error_uri": "http://example.com/error"
               })),
@@ -123,7 +123,7 @@
         refreshToken,
         scope}) {
       return handle(new http.Response(
-          JSON.encode({
+          jsonEncode({
             'access_token': accessToken,
             'token_type': tokenType,
             'expires_in': expiresIn,
@@ -165,10 +165,10 @@
 
     test('with custom getParameters() returns the correct credentials', () {
       var body = '_' +
-          JSON.encode({'token_type': 'bearer', 'access_token': 'access token'});
+          jsonEncode({'token_type': 'bearer', 'access_token': 'access token'});
       var credentials = handle(
           new http.Response(body, 200, headers: {'content-type': 'text/plain'}),
-          getParameters: (contentType, body) => JSON.decode(body.substring(1)));
+          getParameters: (contentType, body) => jsonDecode(body.substring(1)));
       expect(credentials.accessToken, equals('access token'));
       expect(credentials.tokenEndpoint.toString(),
           equals(tokenEndpoint.toString()));
@@ -177,7 +177,7 @@
     test('throws a FormatException if custom getParameters rejects response',
         () {
       var response = new http.Response(
-          JSON.encode({
+          jsonEncode({
             'access_token': 'access token',
             'token_type': 'bearer',
             'expires_in': 24,
@@ -246,7 +246,7 @@
 
     test('with a custom scope delimiter sets the scopes', () {
       var response = new http.Response(
-          JSON.encode({
+          jsonEncode({
             'access_token': 'access token',
             'token_type': 'bearer',
             'expires_in': null,
diff --git a/test/resource_owner_password_grant_test.dart b/test/resource_owner_password_grant_test.dart
index c8274f0..04d1537 100644
--- a/test/resource_owner_password_grant_test.dart
+++ b/test/resource_owner_password_grant_test.dart
@@ -12,7 +12,7 @@
 
 import 'utils.dart';
 
-final success = JSON.encode({
+final success = jsonEncode({
   "access_token": "2YotnFZFEjr1zCsicMWpAA",
   "token_type": "bearer",
   "expires_in": 3600,
