diff --git a/.travis.yml b/.travis.yml
index d8ab216..1bb80fe 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,16 +1,14 @@
 language: dart
-sudo: false
-dart: dev
+
+dart:
+- 2.0.0
+- dev
 
 dart_task:
   - test: --platform vm
   - test: --platform firefox -j 1
-  - dartanalyzer --fatal-infos --fatal-warnings
-
-matrix:
-  include:
-    - dart: dev
-      dart_task: dartfmt
+  - dartanalyzer: --fatal-infos --fatal-warnings .
+  - dartfmt
 
 # Only building master means that we don't run two builds for each pull request.
 branches:
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..cc05835
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,8 @@
+include: package:pedantic/analysis_options.yaml
+linter:
+  rules:
+  - prefer_equal_for_default_values
+  - prefer_generic_function_type_aliases
+  - slash_for_doc_comments
+  - unnecessary_const
+  - unnecessary_new
diff --git a/lib/html.dart b/lib/html.dart
index 3a34572..e2dc145 100644
--- a/lib/html.dart
+++ b/lib/html.dart
@@ -142,10 +142,10 @@
 /// messages.
 class BinaryType {
   /// Tells the channel to emit binary messages as [Blob]s.
-  static const blob = const BinaryType._("blob", "blob");
+  static const blob = BinaryType._("blob", "blob");
 
   /// Tells the channel to emit binary messages as [Uint8List]s.
-  static const list = const BinaryType._("list", "arraybuffer");
+  static const list = BinaryType._("list", "arraybuffer");
 
   /// The name of the binary type, which matches its variable name.
   final String name;
diff --git a/lib/src/channel.dart b/lib/src/channel.dart
index d701792..bbdaf34 100644
--- a/lib/src/channel.dart
+++ b/lib/src/channel.dart
@@ -90,7 +90,7 @@
   ///
   /// [WebSocket handshake]: https://tools.ietf.org/html/rfc6455#section-4
   WebSocketChannel(StreamChannel<List<int>> channel,
-      {String protocol, Duration pingInterval, bool serverSide: true})
+      {String protocol, Duration pingInterval, bool serverSide = true})
       : _webSocket = WebSocketImpl.fromSocket(
             channel.stream, channel.sink, protocol, serverSide)
           ..pingInterval = pingInterval;
diff --git a/lib/src/copy/bytes_builder.dart b/lib/src/copy/bytes_builder.dart
index dfa392b..fed15ad 100644
--- a/lib/src/copy/bytes_builder.dart
+++ b/lib/src/copy/bytes_builder.dart
@@ -24,7 +24,7 @@
   /// it [copy] is false, the data is only copied if needed. That means that if
   /// the lists are changed after added to the [BytesBuilder], it may effect the
   /// output. Default is `true`.
-  factory BytesBuilder({bool copy: true}) {
+  factory BytesBuilder({bool copy = true}) {
     if (copy) {
       return _CopyingBytesBuilder();
     } else {
diff --git a/lib/src/copy/web_socket_impl.dart b/lib/src/copy/web_socket_impl.dart
index 36ebd23..6ac07cf 100644
--- a/lib/src/copy/web_socket_impl.dart
+++ b/lib/src/copy/web_socket_impl.dart
@@ -52,11 +52,6 @@
   static const int RESERVED_F = 15;
 }
 
-class _EncodedString {
-  final List<int> bytes;
-  _EncodedString(this.bytes);
-}
-
 /// The web socket protocol transformer handles the protocol byte stream
 /// which is supplied through the `handleData`. As the protocol is processed,
 /// it'll output frame data as either a List<int> or String.
@@ -334,7 +329,7 @@
       case _WebSocketOpcode.CLOSE:
         closeCode = WebSocketStatus.NO_STATUS_RECEIVED;
         var payload = _payload.takeBytes();
-        if (payload.length > 0) {
+        if (payload.isNotEmpty) {
           if (payload.length == 1) {
             throw WebSocketChannelException("Protocol error");
           }
@@ -426,9 +421,6 @@
       } else if (message is List<int>) {
         opcode = _WebSocketOpcode.BINARY;
         data = message;
-      } else if (message is _EncodedString) {
-        opcode = _WebSocketOpcode.TEXT;
-        data = message.bytes;
       } else {
         throw ArgumentError(message);
       }
diff --git a/pubspec.yaml b/pubspec.yaml
index 8f1bf89..d4aee51 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: web_socket_channel
-version: 1.0.9
+version: 1.0.10-dev
 
 description: StreamChannel wrappers for WebSockets. This package provides a cross-platform WebSocketChannel API, a cross-platform implementation of that API that communicates over an underlying StreamChannel, IOWebSocketChannel that wraps dart:io's WebSocket class, and a HtmlWebSocketChannel that wrap's dart:html's.
 author: Dart Team <misc@dartlang.org>
@@ -14,4 +14,5 @@
   stream_channel: ^1.2.0
 
 dev_dependencies:
+  pedantic:
   test: ^1.2.0
diff --git a/test/io_test.dart b/test/io_test.dart
index 187c1c9..f8f6325 100644
--- a/test/io_test.dart
+++ b/test/io_test.dart
@@ -82,7 +82,7 @@
     });
 
     var channel = IOWebSocketChannel.connect("ws://localhost:${server.port}");
-    channel.sink.close(5678, "raisin");
+    await channel.sink.close(5678, "raisin");
   });
 
   test(".connect wraps a connection error in WebSocketChannelException",
diff --git a/test/web_socket_test.dart b/test/web_socket_test.dart
index dab9656..0d63323 100644
--- a/test/web_socket_test.dart
+++ b/test/web_socket_test.dart
@@ -76,7 +76,7 @@
         var message = await webSocket.stream.first;
         expect(message, equals("ping"));
         webSocket.sink.add("pong");
-        webSocket.sink.close();
+        await webSocket.sink.close();
       });
 
       var webSocket = await WebSocket.connect('ws://localhost:${server.port}');
