diff --git a/lib/generators/console_full.dart b/lib/generators/console_full.dart
index 6cb3f88751ca55e49f329d743a7cdfb80865d891..645205ac9c6013fdd5b3618d8af37eb4b7e08119 100644
--- a/lib/generators/console_full.dart
+++ b/lib/generators/console_full.dart
@@ -12,9 +12,10 @@ import 'console_full_data.dart';
  * A generator for a hello world command-line application.
  */
 class ConsoleFullGenerator extends DefaultGenerator {
-  ConsoleFullGenerator() : super('console-full', 'Console Application',
-          'A larger command-line application sample.',
-          categories: const ['dart', 'console']) {
+  ConsoleFullGenerator()
+      : super('console-full', 'Console Application',
+            'A larger command-line application sample.',
+            categories: const ['dart', 'console']) {
     for (TemplateFile file in decodeConcatenatedData(data)) {
       addTemplateFile(file);
     }
diff --git a/lib/generators/console_simple.dart b/lib/generators/console_simple.dart
index bd6341307661fd86632654f90953a2a922869f38..913932759d4084c68b39a8d44a0ce4db8d0386c8 100644
--- a/lib/generators/console_simple.dart
+++ b/lib/generators/console_simple.dart
@@ -12,9 +12,10 @@ import 'console_simple_data.dart';
  * A generator for a hello world command-line application.
  */
 class ConsoleSimpleGenerator extends DefaultGenerator {
-  ConsoleSimpleGenerator() : super('console-simple', 'Console Application',
-          'A simple command-line application.',
-          categories: const ['dart', 'console']) {
+  ConsoleSimpleGenerator()
+      : super('console-simple', 'Console Application',
+            'A simple command-line application.',
+            categories: const ['dart', 'console']) {
     for (TemplateFile file in decodeConcatenatedData(data)) {
       addTemplateFile(file);
     }
@@ -22,5 +23,6 @@ class ConsoleSimpleGenerator extends DefaultGenerator {
     setEntrypoint(getFile('bin/main.dart'));
   }
 
-  String getInstallInstructions() => "run your app using 'dart ${entrypoint.path}'";
+  String getInstallInstructions() =>
+      "run your app using 'dart ${entrypoint.path}'";
 }
diff --git a/lib/generators/package_simple.dart b/lib/generators/package_simple.dart
index 07765fa1166c221e638c66151f74ed8f5824a065..9da3947146eb957cd6f21255be409af811bf26ea 100644
--- a/lib/generators/package_simple.dart
+++ b/lib/generators/package_simple.dart
@@ -12,9 +12,10 @@ import 'package_simple_data.dart';
  * A generator for a pub library.
  */
 class PackageSimpleGenerator extends DefaultGenerator {
-  PackageSimpleGenerator() : super('package-simple', 'Dart Package',
-          'A starting point for Dart libraries or applications.',
-          categories: const ['dart']) {
+  PackageSimpleGenerator()
+      : super('package-simple', 'Dart Package',
+            'A starting point for Dart libraries or applications.',
+            categories: const ['dart']) {
     for (TemplateFile file in decodeConcatenatedData(data)) {
       addTemplateFile(file);
     }
diff --git a/lib/generators/server_appengine.dart b/lib/generators/server_appengine.dart
index 4f9cbf8c00d5c62b184f27356f18e4f6b038508b..bca95b0c558ba11debd7802d5e15696239911cb1 100644
--- a/lib/generators/server_appengine.dart
+++ b/lib/generators/server_appengine.dart
@@ -12,9 +12,10 @@ import '../src/common.dart';
  * A generator for a hello world AppEngine application.
  */
 class ServerAppEngineGenerator extends DefaultGenerator {
-  ServerAppEngineGenerator() : super('server-appengine',
-          'App Engine Application', 'A simple App Engine application.',
-          categories: const ['dart', 'appengine', 'server']) {
+  ServerAppEngineGenerator()
+      : super('server-appengine', 'App Engine Application',
+            'A simple App Engine application.',
+            categories: const ['dart', 'appengine', 'server']) {
     for (TemplateFile file in decodeConcatenatedData(data)) {
       addTemplateFile(file);
     }
diff --git a/lib/generators/server_shelf.dart b/lib/generators/server_shelf.dart
index 63cc452fca354eda7b5de070475edd026371f941..9067fca9730284e1285126454447ee7c3b1470d5 100644
--- a/lib/generators/server_shelf.dart
+++ b/lib/generators/server_shelf.dart
@@ -12,9 +12,10 @@ import 'server_shelf_data.dart';
  * A generator for a hello world command-line application.
  */
 class ServerShelfGenerator extends DefaultGenerator {
-  ServerShelfGenerator() : super('server-shelf', 'Shelf Web Server',
-          'A web server built using the shelf package.',
-          categories: const ['dart', 'shelf', 'server']) {
+  ServerShelfGenerator()
+      : super('server-shelf', 'Shelf Web Server',
+            'A web server built using the shelf package.',
+            categories: const ['dart', 'shelf', 'server']) {
     for (TemplateFile file in decodeConcatenatedData(data)) {
       addTemplateFile(file);
     }
diff --git a/lib/generators/web_polymer.dart b/lib/generators/web_polymer.dart
index 3cf76a471ffa5d3c1fbacf7a743a1eb5757c8374..71fe721ce94cb5a389709ab4c26f4d280aacd4fd 100644
--- a/lib/generators/web_polymer.dart
+++ b/lib/generators/web_polymer.dart
@@ -12,9 +12,10 @@ import 'web_polymer_data.dart';
  * A generator for a polymer.dart application.
  */
 class WebPolymerGenerator extends DefaultGenerator {
-  WebPolymerGenerator() : super('web-polymer', 'Polymer Web Application',
-          'A web app built using polymer.dart.',
-          categories: const ['dart', 'web']) {
+  WebPolymerGenerator()
+      : super('web-polymer', 'Polymer Web Application',
+            'A web app built using polymer.dart.',
+            categories: const ['dart', 'web']) {
     for (TemplateFile file in decodeConcatenatedData(data)) {
       addTemplateFile(file);
     }
diff --git a/lib/generators/web_simple.dart b/lib/generators/web_simple.dart
index 066b842a04c25dc03bc54ee19e3729bdab584cc8..4516647827a9ed21f7e9b50a426eec82128f0ed0 100644
--- a/lib/generators/web_simple.dart
+++ b/lib/generators/web_simple.dart
@@ -12,9 +12,10 @@ import 'web_simple_data.dart';
  * A generator for a uber-simple web application.
  */
 class WebSimpleGenerator extends DefaultGenerator {
-  WebSimpleGenerator() : super('web-simple',
-          'Uber Simple Web Application', 'An absolute bare-bones web app.',
-          categories: const ['dart', 'web']) {
+  WebSimpleGenerator()
+      : super('web-simple', 'Uber Simple Web Application',
+            'An absolute bare-bones web app.',
+            categories: const ['dart', 'web']) {
     for (TemplateFile file in decodeConcatenatedData(data)) {
       addTemplateFile(file);
     }
diff --git a/lib/src/cli_app.dart b/lib/src/cli_app.dart
index 95744d96915bc762f54f8771fb78cbc8a494d2ab..02d9eff29f050f3168a82c2bc66917269f6e5bb5 100644
--- a/lib/src/cli_app.dart
+++ b/lib/src/cli_app.dart
@@ -98,9 +98,10 @@ class CliApp {
     if (options['help'] || args.isEmpty) {
       // Prompt to opt into advanced analytics.
       if (!analytics.hasSetOptIn) {
-        _out("Welcome to Stagehand! We collect anonymous usage statistics and crash reports in");
-        _out("order to improve the tool (http://goo.gl/6wsncI). Would you like to opt-in to");
-        _out("additional analytics to help us improve Stagehand [y/yes/no]? ");
+        _out(
+            """Welcome to Stagehand! We collect anonymous usage statistics and crash reports in
+order to improve the tool (http://goo.gl/6wsncI). Would you like to opt-in to
+additional analytics to help us improve Stagehand [y/yes/no]? """);
         io.stdout.flush();
         String response = io.stdin.readLineSync();
         response = response.toLowerCase().trim();
@@ -228,7 +229,8 @@ class CliApp {
   }
 
   void _usage(ArgParser argParser) {
-    _out('Stagehand will generate the given application type into the current directory.');
+    _out(
+        'Stagehand will generate the given application type into the current directory.');
     _out('');
     _out('usage: ${APP_NAME} <generator-name>');
     _out(argParser.usage);
@@ -262,7 +264,8 @@ class CliApp {
     return dir
         .listSync(followLinks: false)
         .where((entity) => entity is io.Directory)
-        .where((entity) => !isHiddenDir(entity)).isEmpty;
+        .where((entity) => !isHiddenDir(entity))
+        .isEmpty;
   }
 }
 
diff --git a/pubspec.yaml b/pubspec.yaml
index f1b478b35dcb48d9fdebd388f33d3bcd1a66887a..3909169e50748d2191c5a59ace14f4542c7f9b1d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -4,7 +4,7 @@
 
 name: stagehand
 # When changing this version, change the lib/src/cli_app.dart version as well.
-version: 0.2.3+1
+version: 0.2.4-dev
 description: >
   A scaffolding generator for your Dart projects. Stagehand helps you get set
   up!
@@ -13,16 +13,19 @@ authors:
 - Seth Ladd <sethladd@google.com>
 - Devon Carew <devoncarew@google.com>
 
+environment:
+  sdk: '>=1.9.0 <2.0.0'
+
 # Add the bin/stagehand.dart script to the scripts pub installs.
 executables:
   stagehand:
 
 dependencies:
   args: '>=0.12.0+1 <0.14.0'
-  crypto: '>=0.9.0 <0.10.0'
-  http: '>=0.11.0 <0.12.0'
-  path: '>=1.3.0 <2.0.0'
-  usage: '>=1.0.0 <2.0.0'
+  crypto: ^0.9.0
+  http: ^0.11.0
+  path: ^1.3.0
+  usage: ^1.0.0
 
 dev_dependencies:
   browser: ^0.10.0
diff --git a/templates/console-simple/bin/main.dart b/templates/console-simple/bin/main.dart
index ee097e0823d86c151c893bbf31ef8b1ba4721914..d7c54ac23cfdaa5193fac2ed9a3f3a5cd7a9c92b 100644
--- a/templates/console-simple/bin/main.dart
+++ b/templates/console-simple/bin/main.dart
@@ -1,4 +1,3 @@
-
 main(List<String> args) {
   print('Hello world!');
 }
diff --git a/templates/server-appengine/bin/server.dart b/templates/server-appengine/bin/server.dart
index f631ab13c288c73323b9fabf7f80c0d5d5479c2c..a2557f20ba5f279dc01095b662a2586cff01dfff 100644
--- a/templates/server-appengine/bin/server.dart
+++ b/templates/server-appengine/bin/server.dart
@@ -31,8 +31,8 @@ void requestHandler(HttpRequest request) {
         ..close();
     }
   }).catchError((_) => request.response
-      ..write('Failed handling request: ${request.toString()}.')
-      ..close());
+    ..write('Failed handling request: ${request.toString()}.')
+    ..close());
 }
 
 /// GET request handler.
@@ -65,9 +65,10 @@ handleGetRequest(HttpRequest request) {
     cache.read(response, queryMap.keys);
   } else if (request.uri.path == '/clear_cache') {
     // Reintialize the cache. This clears all values and resets the default.
-    cache.clear()
-      .then((_) => response.writeln('Cleared cache!'))
-      .whenComplete(response.close);
+    cache
+        .clear()
+        .then((_) => response.writeln('Cleared cache!'))
+        .whenComplete(response.close);
   } else {
     // Serve some static content. This must be located in 'build/web' or some
     // subdirectory of 'build/web'.
diff --git a/templates/server-shelf/bin/server.dart b/templates/server-shelf/bin/server.dart
index e4ce357a007ef469f7a081b2c58c8c4d90492818..4fa9eacb6201fa4a521ea04e68396d31eb3a8403 100644
--- a/templates/server-shelf/bin/server.dart
+++ b/templates/server-shelf/bin/server.dart
@@ -9,7 +9,7 @@ import 'package:shelf/shelf_io.dart' as io;
 
 void main(List<String> args) {
   var parser = new ArgParser()
-      ..addOption('port', abbr: 'p', defaultsTo: '8080');
+    ..addOption('port', abbr: 'p', defaultsTo: '8080');
 
   var result = parser.parse(args);
 
diff --git a/test/common_test.dart b/test/common_test.dart
index ea43d5210f681ece3689ed3dc25564bffd3793eb..78dcbe7d38bf923548ce269d4e819b94e408a6d8 100644
--- a/test/common_test.dart
+++ b/test/common_test.dart
@@ -28,7 +28,8 @@ void main() {
     });
 
     test('convertToYamlMultiLine', () {
-      expect(convertToYamlMultiLine(
+      expect(
+          convertToYamlMultiLine(
               'one two three four five size seven eight nine '
               'ten eleven twelve thirteen fourteen fifteen'),
           '  one two three four five size seven eight nine ten eleven twelve '
diff --git a/test/validate_templates.dart b/test/validate_templates.dart
index d3f04594b4728d606e59afa350acea2b9d29b85e..5b9b92944162c52b08c3c8cd615b498dd22f2ff0 100644
--- a/test/validate_templates.dart
+++ b/test/validate_templates.dart
@@ -55,8 +55,8 @@ void _testGenerator(stagehand.Generator generator, Directory tempDir) {
       !FileSystemEntity.isFileSync(filePath)) {
     var parent = new Directory(path.dirname(filePath));
 
-    var file = _listSync(parent).firstWhere((f) => f.path.endsWith('.dart'),
-        orElse: () => null);
+    var file = _listSync(parent)
+        .firstWhere((f) => f.path.endsWith('.dart'), orElse: () => null);
 
     if (file == null) {
       filePath = null;
@@ -78,7 +78,8 @@ void _testGenerator(stagehand.Generator generator, Directory tempDir) {
   var devDeps = pubspecContent['dev_dependencies'];
   if (devDeps != null) {
     if (devDeps.containsKey('test')) {
-      Pub.run('test', runOptions: new RunOptions(workingDirectory: tempDir.path));
+      Pub.run('test',
+          runOptions: new RunOptions(workingDirectory: tempDir.path));
     }
   }
 }
diff --git a/tool/grind.dart b/tool/grind.dart
index 602a6170a21443a1edfd58f0c229abcaea1306d6..56114892a27f19690a09509fd20a0a5715d91d2d 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -11,16 +11,19 @@ import 'package:path/path.dart' as path;
 import 'package:stagehand/stagehand.dart' as stagehand;
 
 final RegExp _binaryFileTypes = new RegExp(
-    r'\.(jpe?g|png|gif|ico|svg|ttf|eot|woff|woff2)$', caseSensitive: false);
+    r'\.(jpe?g|png|gif|ico|svg|ttf|eot|woff|woff2)$',
+    caseSensitive: false);
 
 main(List<String> args) => grind(args);
 
-@Task('Concatenate the template files into data files that the generators can consume')
+@Task('Concatenate the template files into data files'
+    ' that the generators can consume')
 void build() {
   stagehand.generators.forEach((generator) {
     _concatenateFiles(
         getDir('templates/${generator.id}'),
-        getFile('lib/generators/${generator.id.replaceAll('-', '_')}_data.dart'));
+        getFile(
+            'lib/generators/${generator.id.replaceAll('-', '_')}_data.dart'));
   });
 
   // Update the readme.md file.
@@ -30,10 +33,7 @@ void build() {
     return '* `${g.id}` - ${g.description}';
   }).join('\n');
   String newSource = _replaceInString(
-      source,
-      '## Stagehand templates',
-      '## Installation',
-      fragment + '\n');
+      source, '## Stagehand templates', '## Installation', fragment + '\n');
   f.writeAsStringSync(newSource);
 
   // Update the site/index.html file.
@@ -42,11 +42,8 @@ void build() {
   fragment = stagehand.generators.map((g) {
     return '  <li>${g.id} - <em>${g.description}</em></li>';
   }).join('\n');
-  newSource = _replaceInString(
-      source,
-      '<ul id="template-list">',
-      '</ul>',
-      fragment);
+  newSource =
+      _replaceInString(source, '<ul id="template-list">', '</ul>', fragment);
   f.writeAsStringSync(newSource);
 }
 
@@ -134,8 +131,8 @@ List<FileSystemEntity> _listSync(Directory dir,
 
 /// Look for [start] and [end] in [source]; replace the current contents with
 /// [replacement], and return the result.
-String _replaceInString(String source, String start,
-    String end, String replacement) {
+String _replaceInString(
+    String source, String start, String end, String replacement) {
   int startIndex = source.indexOf(start);
   int endIndex = source.indexOf(end, startIndex + 1);