diff --git a/.analysis_options b/.analysis_options
new file mode 100644
index 0000000..a10d4c5
--- /dev/null
+++ b/.analysis_options
@@ -0,0 +1,2 @@
+analyzer:
+  strong-mode: true
diff --git a/lib/src/bound_multipart_stream.dart b/lib/src/bound_multipart_stream.dart
index 270503a..73811e7 100644
--- a/lib/src/bound_multipart_stream.dart
+++ b/lib/src/bound_multipart_stream.dart
@@ -81,13 +81,13 @@
 
   int _controllerState = _CONTROLLER_STATE_IDLE;
 
-  StreamController _controller;
+  StreamController<MimeMultipart> _controller;
 
   Stream<MimeMultipart> get stream => _controller.stream;
 
   StreamSubscription _subscription;
 
-  StreamController _multipartController;
+  StreamController<List<int>> _multipartController;
   Map<String, String> _headers;
 
   int _state = _START;
diff --git a/test/mime_multipart_transformer_test.dart b/test/mime_multipart_transformer_test.dart
index de1dc6d..76f6514 100644
--- a/test/mime_multipart_transformer_test.dart
+++ b/test/mime_multipart_transformer_test.dart
@@ -25,13 +25,13 @@
 void _runParseTest(String message, String boundary, TestMode mode,
     [List<Map> expectedHeaders, List expectedParts, bool expectError = false]) {
   Future testWrite(List<int> data, [int chunkSize = -1]) {
-    StreamController controller = new StreamController(sync: true);
+    var controller = new StreamController<List<int>>(sync: true);
 
     var stream =
         controller.stream.transform(new MimeMultipartTransformer(boundary));
     int i = 0;
     var completer = new Completer();
-    var futures = [];
+    var futures = <Future>[];
     stream.listen((multipart) {
       int part = i++;
       if (expectedHeaders != null) {
@@ -91,7 +91,7 @@
 
   Future testFirstPartOnly(List<int> data, [int chunkSize = -1]) {
     var completer = new Completer();
-    var controller = new StreamController(sync: true);
+    var controller = new StreamController<List<int>>(sync: true);
 
     var stream =
         controller.stream.transform(new MimeMultipartTransformer(boundary));
@@ -117,12 +117,12 @@
   Future testCompletePartAfterCancel(List<int> data, int parts,
       [int chunkSize = -1]) {
     var completer = new Completer();
-    var controller = new StreamController(sync: true);
+    var controller = new StreamController<List<int>>(sync: true);
     var stream =
         controller.stream.transform(new MimeMultipartTransformer(boundary));
     var subscription;
     int i = 0;
-    var futures = [];
+    var futures = <Future>[];
     subscription = stream.listen((multipart) {
       int partIndex = i;
 
diff --git a/test/mime_type_test.dart b/test/mime_type_test.dart
index 0ac32f5..87de96d 100644
--- a/test/mime_type_test.dart
+++ b/test/mime_type_test.dart
@@ -93,7 +93,7 @@
   });
 
   test('default magic number', () {
-    var actualMaxBytes = DEFAULT_MAGIC_NUMBERS.fold(0, (previous, magic) {
+    var actualMaxBytes = DEFAULT_MAGIC_NUMBERS.fold(0, (num previous, magic) {
       return math.max(previous, magic.numbers.length);
     });
 
