diff --git a/lib/src/file_data_reader.dart b/lib/src/file_data_reader.dart
index 8e152f3..d5d1ff5 100644
--- a/lib/src/file_data_reader.dart
+++ b/lib/src/file_data_reader.dart
@@ -13,7 +13,6 @@
 import 'intl_helpers.dart';
 
 class FileDataReader implements LocaleDataReader {
-
   /// The base path from which we will read data.
   String path;
 
diff --git a/lib/src/http_request_data_reader.dart b/lib/src/http_request_data_reader.dart
index 2a24aa2..c9c6cd6 100644
--- a/lib/src/http_request_data_reader.dart
+++ b/lib/src/http_request_data_reader.dart
@@ -12,7 +12,6 @@
 import 'intl_helpers.dart';
 
 class HttpRequestDataReader implements LocaleDataReader {
-
   /// The base url from which we read the data.
   String url;
   HttpRequestDataReader(this.url);
@@ -20,8 +19,7 @@
   Future read(String locale) {
     var request = new HttpRequest();
     request.timeout = 5000;
-    return _getString('$url$locale.json', request)
-        .then((r) => r.responseText);
+    return _getString('$url$locale.json', request).then((r) => r.responseText);
   }
 
   /// Read a string with the given request. This is a stripped down copy
diff --git a/test/number_format_test_core.dart b/test/number_format_test_core.dart
index 61b5e78..32f6978 100644
--- a/test/number_format_test_core.dart
+++ b/test/number_format_test_core.dart
@@ -55,8 +55,8 @@
   ];
 }
 
-Map<String, num> get testNumbers => new Map.from(testNumbersWeCanReadBack)
-  ..addAll(testNumbersWeCannotReadBack);
+Map<String, num> get testNumbers =>
+    new Map.from(testNumbersWeCanReadBack)..addAll(testNumbersWeCannotReadBack);
 
 runTests(Map<String, num> allTestNumbers) {
   // For data from a list of locales, run each locale's data as a separate
@@ -159,8 +159,8 @@
     readBack = swissConvention.parse(formatted);
     expect(readBack, amount);
 
-   // ignore: deprecated_member_use
-   var italianSwiss = new NumberFormat.currencyPattern('it_CH', r'$');
+    // ignore: deprecated_member_use
+    var italianSwiss = new NumberFormat.currencyPattern('it_CH', r'$');
     formatted = italianSwiss.format(amount);
     expect(formatted,
         r"$" + nbsp + "1" + backquote + "000" + backquote + "000.32");
@@ -177,7 +177,7 @@
 
     // Verify that we can pass null in order to specify the currency symbol
     // but use the default locale.
-   // ignore: deprecated_member_use
+    // ignore: deprecated_member_use
     var defaultLocale = new NumberFormat.currencyPattern(null, 'Smurfs');
     formatted = defaultLocale.format(amount);
     // We don't know what the exact format will be, but it should have Smurfs.
