diff --git a/packages/flutter_tools/lib/src/android/adb.dart b/packages/flutter_tools/lib/src/android/adb.dart
index f5a5840..2392dc3 100644
--- a/packages/flutter_tools/lib/src/android/adb.dart
+++ b/packages/flutter_tools/lib/src/android/adb.dart
@@ -5,8 +5,8 @@
 import 'dart:async';
 import 'dart:io';
 
-import '../base/globals.dart';
 import '../base/process.dart';
+import '../globals.dart';
 
 // https://android.googlesource.com/platform/system/core/+/android-4.4_r1/adb/OVERVIEW.TXT
 // https://android.googlesource.com/platform/system/core/+/android-4.4_r1/adb/SERVICES.TXT
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart
index 27096f2..819f64f 100644
--- a/packages/flutter_tools/lib/src/android/android_sdk.dart
+++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -7,8 +7,8 @@
 import 'package:path/path.dart' as path;
 import 'package:pub_semver/pub_semver.dart';
 
-import '../base/globals.dart';
 import '../base/os.dart';
+import '../globals.dart';
 
 // Android SDK layout:
 //
diff --git a/packages/flutter_tools/lib/src/android/android_workflow.dart b/packages/flutter_tools/lib/src/android/android_workflow.dart
index 3bbc619..52b9942 100644
--- a/packages/flutter_tools/lib/src/android/android_workflow.dart
+++ b/packages/flutter_tools/lib/src/android/android_workflow.dart
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import '../base/globals.dart';
 import '../doctor.dart';
+import '../globals.dart';
 import 'android_sdk.dart';
 
 class AndroidWorkflow extends Workflow {
@@ -15,8 +15,11 @@
 
   bool get canLaunchDevices => androidSdk != null && androidSdk.validateSdkWellFormed(complain: false);
 
-  void diagnose() {
-    Validator androidValidator = new Validator('Develop for Android devices');
+  ValidationResult validate() {
+    Validator androidValidator = new Validator(
+      '$name toolchain',
+      description: 'develop for Android devices'
+    );
 
     Function _sdkExists = () {
       return androidSdk == null ? ValidationType.missing : ValidationType.installed;
@@ -29,6 +32,8 @@
       validatorFunction: _sdkExists
     ));
 
-    androidValidator.validate().print();
+    return androidValidator.validate();
   }
+
+  void diagnose() => validate().print();
 }
diff --git a/packages/flutter_tools/lib/src/android/device_android.dart b/packages/flutter_tools/lib/src/android/device_android.dart
index 5a3ec9c..2deaa9c 100644
--- a/packages/flutter_tools/lib/src/android/device_android.dart
+++ b/packages/flutter_tools/lib/src/android/device_android.dart
@@ -11,12 +11,12 @@
 import '../android/android_sdk.dart';
 import '../application_package.dart';
 import '../base/common.dart';
-import '../base/globals.dart';
 import '../base/os.dart';
 import '../base/process.dart';
 import '../build_configuration.dart';
 import '../device.dart';
 import '../flx.dart' as flx;
+import '../globals.dart';
 import '../toolchain.dart';
 import 'adb.dart';
 import 'android.dart';
diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart
index b57d81b..6f962a9 100644
--- a/packages/flutter_tools/lib/src/artifacts.dart
+++ b/packages/flutter_tools/lib/src/artifacts.dart
@@ -8,10 +8,10 @@
 import 'package:archive/archive.dart';
 import 'package:path/path.dart' as path;
 
-import 'base/globals.dart';
 import 'base/os.dart';
 import 'base/process.dart';
 import 'build_configuration.dart';
+import 'globals.dart';
 
 String _getNameForHostPlatform(HostPlatform platform) {
   switch (platform) {
diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart
index 28b4df5..1009e96 100644
--- a/packages/flutter_tools/lib/src/base/process.dart
+++ b/packages/flutter_tools/lib/src/base/process.dart
@@ -6,7 +6,7 @@
 import 'dart:convert';
 import 'dart:io';
 
-import 'globals.dart';
+import '../globals.dart';
 
 typedef String StringConverter(String string);
 
diff --git a/packages/flutter_tools/lib/src/build_configuration.dart b/packages/flutter_tools/lib/src/build_configuration.dart
index 160334b..0dc165f 100644
--- a/packages/flutter_tools/lib/src/build_configuration.dart
+++ b/packages/flutter_tools/lib/src/build_configuration.dart
@@ -6,7 +6,7 @@
 
 import 'package:path/path.dart' as path;
 
-import 'base/globals.dart';
+import 'globals.dart';
 
 enum BuildType {
   prebuilt,
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart
index b50b90e..d5a929d 100644
--- a/packages/flutter_tools/lib/src/commands/analyze.dart
+++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -11,14 +11,14 @@
 import 'package:path/path.dart' as path;
 
 import '../artifacts.dart';
-import '../base/globals.dart';
 import '../base/process.dart';
 import '../build_configuration.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 
 class AnalyzeCommand extends FlutterCommand {
   String get name => 'analyze';
-  String get description => 'Runs a carefully configured dartanalyzer over the current project\'s Dart code.';
+  String get description => 'Analyze the project\'s Dart code.';
 
   AnalyzeCommand() {
     argParser.addFlag('flutter-repo', help: 'Include all the examples and tests from the Flutter repository.', defaultsTo: false);
diff --git a/packages/flutter_tools/lib/src/commands/apk.dart b/packages/flutter_tools/lib/src/commands/apk.dart
index ffc6781..57fb54e 100644
--- a/packages/flutter_tools/lib/src/commands/apk.dart
+++ b/packages/flutter_tools/lib/src/commands/apk.dart
@@ -11,12 +11,12 @@
 import '../application_package.dart';
 import '../artifacts.dart';
 import '../base/file_system.dart';
-import '../base/globals.dart';
 import '../base/os.dart';
 import '../base/process.dart';
 import '../build_configuration.dart';
 import '../device.dart';
 import '../flx.dart' as flx;
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 import '../services.dart';
 import '../toolchain.dart';
diff --git a/packages/flutter_tools/lib/src/commands/build.dart b/packages/flutter_tools/lib/src/commands/build.dart
index 5e1f763..4318334 100644
--- a/packages/flutter_tools/lib/src/commands/build.dart
+++ b/packages/flutter_tools/lib/src/commands/build.dart
@@ -4,14 +4,14 @@
 
 import 'dart:async';
 
-import '../base/globals.dart';
 import '../flx.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 import '../toolchain.dart';
 
 class BuildCommand extends FlutterCommand {
   final String name = 'build';
-  final String description = 'Packages your Flutter app into an FLX.';
+  final String description = 'Package your Flutter app into an FLX.';
 
   BuildCommand() {
     argParser.addFlag('precompiled', negatable: false);
diff --git a/packages/flutter_tools/lib/src/commands/cache.dart b/packages/flutter_tools/lib/src/commands/cache.dart
index 872dc43..c33d046 100644
--- a/packages/flutter_tools/lib/src/commands/cache.dart
+++ b/packages/flutter_tools/lib/src/commands/cache.dart
@@ -7,7 +7,7 @@
 import 'package:args/command_runner.dart';
 
 import '../artifacts.dart';
-import '../base/globals.dart';
+import '../globals.dart';
 
 class CacheCommand extends Command {
   final String name = 'cache';
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index 3f9f0cf..14f6db9 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -11,8 +11,8 @@
 
 import '../android/android.dart' as android;
 import '../artifacts.dart';
-import '../base/globals.dart';
 import '../dart/pub.dart';
+import '../globals.dart';
 import '../ios/setup_xcodeproj.dart';
 
 class CreateCommand extends Command {
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart
index 4fdb860..252e929 100644
--- a/packages/flutter_tools/lib/src/commands/daemon.dart
+++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -10,9 +10,9 @@
 import '../android/android_sdk.dart';
 import '../android/device_android.dart';
 import '../base/context.dart';
-import '../base/globals.dart';
 import '../base/logger.dart';
 import '../device.dart';
+import '../globals.dart';
 import '../ios/device_ios.dart';
 import '../ios/simulator.dart';
 import '../runner/flutter_command.dart';
diff --git a/packages/flutter_tools/lib/src/commands/devices.dart b/packages/flutter_tools/lib/src/commands/devices.dart
index 3ff2697..6531c63 100644
--- a/packages/flutter_tools/lib/src/commands/devices.dart
+++ b/packages/flutter_tools/lib/src/commands/devices.dart
@@ -4,8 +4,8 @@
 
 import 'dart:async';
 
-import '../base/globals.dart';
 import '../device.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 
 class DevicesCommand extends FlutterCommand {
diff --git a/packages/flutter_tools/lib/src/commands/doctor.dart b/packages/flutter_tools/lib/src/commands/doctor.dart
index ed049d0..dd30c60 100644
--- a/packages/flutter_tools/lib/src/commands/doctor.dart
+++ b/packages/flutter_tools/lib/src/commands/doctor.dart
@@ -5,20 +5,20 @@
 import 'dart:async';
 
 import '../artifacts.dart';
-import '../base/globals.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 import '../runner/version.dart';
 
 class DoctorCommand extends FlutterCommand {
   final String name = 'doctor';
-  final String description = 'Diagnose the flutter tool.';
+  final String description = 'Show information about the installed tooling.';
 
   bool get requiresProjectRoot => false;
 
   Future<int> runInProject() async {
     // general info
     String flutterRoot = ArtifactStore.flutterRoot;
-    printStatus('Flutter root is $flutterRoot.');
+    printStatus('Flutter root: $flutterRoot.');
     printStatus('');
 
     // doctor
diff --git a/packages/flutter_tools/lib/src/commands/listen.dart b/packages/flutter_tools/lib/src/commands/listen.dart
index f768088..e52cfc0 100644
--- a/packages/flutter_tools/lib/src/commands/listen.dart
+++ b/packages/flutter_tools/lib/src/commands/listen.dart
@@ -5,8 +5,8 @@
 import 'dart:async';
 import 'dart:io';
 
-import '../base/globals.dart';
 import '../base/process.dart';
+import '../globals.dart';
 import 'run.dart';
 
 class ListenCommand extends RunCommandBase {
diff --git a/packages/flutter_tools/lib/src/commands/logs.dart b/packages/flutter_tools/lib/src/commands/logs.dart
index 81956b6..06d6622 100644
--- a/packages/flutter_tools/lib/src/commands/logs.dart
+++ b/packages/flutter_tools/lib/src/commands/logs.dart
@@ -4,13 +4,13 @@
 
 import 'dart:async';
 
-import '../base/globals.dart';
 import '../device.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 
 class LogsCommand extends FlutterCommand {
   final String name = 'logs';
-  final String description = 'Show logs for running Flutter apps.';
+  final String description = 'Show log output for running Flutter apps.';
 
   LogsCommand() {
     argParser.addFlag('clear',
diff --git a/packages/flutter_tools/lib/src/commands/refresh.dart b/packages/flutter_tools/lib/src/commands/refresh.dart
index d4d5fc1..bed138d 100644
--- a/packages/flutter_tools/lib/src/commands/refresh.dart
+++ b/packages/flutter_tools/lib/src/commands/refresh.dart
@@ -7,8 +7,8 @@
 
 import 'package:path/path.dart' as path;
 
-import '../base/globals.dart';
 import '../flx.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 
 class RefreshCommand extends FlutterCommand {
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart
index 1ae20a5..c4fcb7b 100644
--- a/packages/flutter_tools/lib/src/commands/run.dart
+++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -9,11 +9,11 @@
 
 import '../application_package.dart';
 import '../base/common.dart';
-import '../base/globals.dart';
 import '../build_configuration.dart';
 import '../dart/pub.dart';
 import '../device.dart';
 import '../flx.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 import '../toolchain.dart';
 import 'apk.dart';
diff --git a/packages/flutter_tools/lib/src/commands/run_mojo.dart b/packages/flutter_tools/lib/src/commands/run_mojo.dart
index 28b6fbd..d6e8a92 100644
--- a/packages/flutter_tools/lib/src/commands/run_mojo.dart
+++ b/packages/flutter_tools/lib/src/commands/run_mojo.dart
@@ -8,10 +8,10 @@
 import 'package:path/path.dart' as path;
 
 import '../artifacts.dart';
-import '../base/globals.dart';
 import '../base/process.dart';
 import '../build_configuration.dart';
 import '../flx.dart' as flx;
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 import 'run.dart';
 
diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart
index 91e0fbe..fcd2324 100644
--- a/packages/flutter_tools/lib/src/commands/test.dart
+++ b/packages/flutter_tools/lib/src/commands/test.dart
@@ -9,14 +9,14 @@
 import 'package:test/src/executable.dart' as executable;
 
 import '../artifacts.dart';
-import '../base/globals.dart';
 import '../build_configuration.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 import '../test/loader.dart' as loader;
 
 class TestCommand extends FlutterCommand {
   String get name => 'test';
-  String get description => 'Runs Flutter unit tests for the current project (Linux only).';
+  String get description => 'Run Flutter unit tests for the current project (Linux only).';
 
   bool get requiresProjectRoot => false;
 
diff --git a/packages/flutter_tools/lib/src/commands/trace.dart b/packages/flutter_tools/lib/src/commands/trace.dart
index 365d552..a5b0744 100644
--- a/packages/flutter_tools/lib/src/commands/trace.dart
+++ b/packages/flutter_tools/lib/src/commands/trace.dart
@@ -6,7 +6,7 @@
 
 import '../android/device_android.dart';
 import '../application_package.dart';
-import '../base/globals.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 
 class TraceCommand extends FlutterCommand {
diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart
index 48b4c8f..fbe67ee 100644
--- a/packages/flutter_tools/lib/src/commands/upgrade.dart
+++ b/packages/flutter_tools/lib/src/commands/upgrade.dart
@@ -5,8 +5,8 @@
 import 'dart:async';
 
 import '../artifacts.dart';
-import '../base/globals.dart';
 import '../base/process.dart';
+import '../globals.dart';
 import '../runner/flutter_command.dart';
 import '../runner/version.dart';
 
diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart
index 1856561..709d034 100644
--- a/packages/flutter_tools/lib/src/dart/pub.dart
+++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -7,8 +7,8 @@
 
 import 'package:path/path.dart' as path;
 
-import '../base/globals.dart';
 import '../base/process.dart';
+import '../globals.dart';
 
 Future<int> pubGet({
   String directory,
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart
index 274d1ff..28c9333 100644
--- a/packages/flutter_tools/lib/src/device.dart
+++ b/packages/flutter_tools/lib/src/device.dart
@@ -7,8 +7,8 @@
 import 'android/device_android.dart';
 import 'application_package.dart';
 import 'base/common.dart';
-import 'base/globals.dart';
 import 'build_configuration.dart';
+import 'globals.dart';
 import 'ios/device_ios.dart';
 import 'toolchain.dart';
 
diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart
index 4fb4386..d5f1d99 100644
--- a/packages/flutter_tools/lib/src/doctor.dart
+++ b/packages/flutter_tools/lib/src/doctor.dart
@@ -4,7 +4,7 @@
 
 import 'android/android_workflow.dart';
 import 'base/context.dart';
-import 'base/globals.dart';
+import 'globals.dart';
 import 'ios/ios_workflow.dart';
 
 class Doctor {
@@ -34,6 +34,35 @@
 
   List<Workflow> get workflows => _workflows;
 
+  /// Print a summary of the state of the tooling, as well as how to get more info.
+  void summary() => printStatus(summaryText);
+
+  String get summaryText {
+    StringBuffer buffer = new StringBuffer();
+
+    bool allGood = true;
+
+    for (Workflow workflow in workflows) {
+      ValidationResult result = workflow.validate();
+      buffer.write('${result.leadingBox} The ${workflow.name} toolchain is ');
+      if (result.type == ValidationType.missing)
+        buffer.writeln('not installed.');
+      else if (result.type == ValidationType.partial)
+        buffer.writeln('partially installed; more components are available.');
+      else
+        buffer.writeln('fully installed.');
+      if (result.type != ValidationType.installed)
+        allGood = false;
+    }
+
+    if (!allGood) {
+      buffer.writeln();
+      buffer.write('Run "flutter doctor" for information about installing additional components.');
+    }
+
+    return buffer.toString();
+  }
+
   /// Print verbose information about the state of installed tooling.
   void diagnose() {
     for (int i = 0; i < workflows.length; i++) {
@@ -63,6 +92,8 @@
   /// Could this thing launch *something*? It may still have minor issues.
   bool get canLaunchDevices;
 
+  ValidationResult validate();
+
   /// Print verbose information about the state of the workflow.
   void diagnose();
 
@@ -85,20 +116,28 @@
   final String resolution;
   final ValidationFunction validatorFunction;
 
-  List<Validator> _children = [];
+  List<Validator> _children = <Validator>[];
 
   ValidationResult validate() {
+    List<ValidationResult> childResults;
+    ValidationType type;
+
     if (validatorFunction != null)
-      return new ValidationResult(validatorFunction(), this);
+      type = validatorFunction();
 
-    List<ValidationResult> results = _children.map((Validator child) {
-      return child.validate();
-    }).toList();
+    childResults = _children.map((Validator child) => child.validate()).toList();
 
-    ValidationType type = _combine(results.map((ValidationResult result) {
-      return result.type;
-    }));
-    return new ValidationResult(type, this, results);
+    // If there's no immediate validator, the result we return is synthesized
+    // from the sub-tree of children. This is so we can show that the branch is
+    // not fully installed.
+    if (type == null) {
+      type = _combine(childResults
+        .expand((ValidationResult child) => child._allResults)
+        .map((ValidationResult result) => result.type)
+      );
+    }
+
+    return new ValidationResult(type, this, childResults);
   }
 
   ValidationType _combine(Iterable<ValidationType> types) {
@@ -119,6 +158,15 @@
   final Validator validator;
   final List<ValidationResult> childResults;
 
+  String get leadingBox {
+    if (type == ValidationType.missing)
+      return '[ ]';
+    else if (type == ValidationType.installed)
+      return '[✓]';
+    else
+      return '[-]';
+  }
+
   void print([String indent = '']) {
     printSelf(indent);
 
@@ -126,15 +174,15 @@
       child.print(indent + '  ');
   }
 
-  void printSelf(String indent) {
+  void printSelf([String indent = '']) {
     String result = indent;
 
     if (type == ValidationType.missing)
-      result += '[ ] ';
+      result += '$leadingBox ';
     else if (type == ValidationType.installed)
-      result += '[✓] ';
+      result += '$leadingBox ';
     else
-      result += '[-] ';
+      result += '$leadingBox ';
 
     result += '${validator.name} ';
 
@@ -151,4 +199,10 @@
     if (type == ValidationType.missing && validator.resolution != null)
       printStatus('$indent    ${validator.resolution}');
   }
+
+  List<ValidationResult> get _allResults {
+    List<ValidationResult> results = <ValidationResult>[this];
+    results.addAll(childResults);
+    return results;
+  }
 }
diff --git a/packages/flutter_tools/lib/src/flx.dart b/packages/flutter_tools/lib/src/flx.dart
index 2e03bd1..e12c434 100644
--- a/packages/flutter_tools/lib/src/flx.dart
+++ b/packages/flutter_tools/lib/src/flx.dart
@@ -14,7 +14,7 @@
 import 'package:yaml/yaml.dart';
 
 import 'base/file_system.dart';
-import 'base/globals.dart';
+import 'globals.dart';
 import 'toolchain.dart';
 
 const String defaultMainPath = 'lib/main.dart';
diff --git a/packages/flutter_tools/lib/src/base/globals.dart b/packages/flutter_tools/lib/src/globals.dart
similarity index 86%
rename from packages/flutter_tools/lib/src/base/globals.dart
rename to packages/flutter_tools/lib/src/globals.dart
index d4f1398..efd072e 100644
--- a/packages/flutter_tools/lib/src/base/globals.dart
+++ b/packages/flutter_tools/lib/src/globals.dart
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import '../android/android_sdk.dart';
-import '../device.dart';
-import '../doctor.dart';
-import '../ios/mac.dart';
-import 'context.dart';
-import 'logger.dart';
+import 'android/android_sdk.dart';
+import 'base/context.dart';
+import 'base/logger.dart';
+import 'device.dart';
+import 'doctor.dart';
+import 'ios/mac.dart';
 
 DeviceManager get deviceManager => context[DeviceManager];
 Logger get logger => context[Logger];
diff --git a/packages/flutter_tools/lib/src/ios/device_ios.dart b/packages/flutter_tools/lib/src/ios/device_ios.dart
index eebcf18..b6a667c 100644
--- a/packages/flutter_tools/lib/src/ios/device_ios.dart
+++ b/packages/flutter_tools/lib/src/ios/device_ios.dart
@@ -3,21 +3,21 @@
 // found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:io';
 import 'dart:convert';
+import 'dart:io';
 
 import 'package:path/path.dart' as path;
 
 import '../application_package.dart';
 import '../artifacts.dart';
 import '../base/common.dart';
-import '../base/globals.dart';
 import '../base/process.dart';
 import '../build_configuration.dart';
 import '../device.dart';
+import '../globals.dart';
+import '../ios/setup_xcodeproj.dart';
 import '../services.dart';
 import '../toolchain.dart';
-import '../ios/setup_xcodeproj.dart';
 import 'simulator.dart';
 
 const String _ideviceinstallerInstructions =
diff --git a/packages/flutter_tools/lib/src/ios/ios_workflow.dart b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
index 8dfc94f..5cc4f70 100644
--- a/packages/flutter_tools/lib/src/ios/ios_workflow.dart
+++ b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
@@ -4,9 +4,9 @@
 
 import 'dart:io';
 
-import '../base/globals.dart';
 import '../base/process.dart';
 import '../doctor.dart';
+import '../globals.dart';
 
 class IOSWorkflow extends Workflow {
   IOSWorkflow() : super('iOS');
@@ -20,8 +20,11 @@
   // for real devices.
   bool get canLaunchDevices => xcode.isInstalled;
 
-  void diagnose() {
-    Validator iosValidator = new Validator('Develop for iOS devices');
+  ValidationResult validate() {
+    Validator iosValidator = new Validator(
+      '$name toolchain',
+      description: 'develop for iOS devices'
+    );
 
     Function _xcodeExists = () {
       return xcode.isInstalled ? ValidationType.installed : ValidationType.missing;
@@ -48,30 +51,34 @@
       validatorFunction: _xcodeExists
     ));
 
-    iosValidator.addValidator(new Validator(
+    Validator brewValidator = new Validator(
       'brew',
       description: 'install additional development packages',
       resolution: 'Download at http://brew.sh/',
       validatorFunction: _brewExists
-    ));
+    );
 
-    iosValidator.addValidator(new Validator(
+    iosValidator.addValidator(brewValidator);
+
+    brewValidator.addValidator(new Validator(
       'ideviceinstaller',
       description: 'discover connected iOS devices',
       resolution: "Install via 'brew install ideviceinstaller'",
       validatorFunction: _ideviceinstallerExists
     ));
 
-    iosValidator.addValidator(new Validator(
+    brewValidator.addValidator(new Validator(
       'ios-deploy',
       description: 'deploy to connected iOS devices',
       resolution: "Install via 'brew install ios-deploy'",
       validatorFunction: _iosdeployExists
     ));
 
-    iosValidator.validate().print();
+    return iosValidator.validate();
   }
 
+  void diagnose() => validate().print();
+
   bool get hasIdeviceId => exitsHappy(<String>['idevice_id', '-h']);
 
   /// Return whether the tooling to list and deploy to real iOS devices (not the
diff --git a/packages/flutter_tools/lib/src/ios/setup_xcodeproj.dart b/packages/flutter_tools/lib/src/ios/setup_xcodeproj.dart
index 3d39175..ce97d94 100644
--- a/packages/flutter_tools/lib/src/ios/setup_xcodeproj.dart
+++ b/packages/flutter_tools/lib/src/ios/setup_xcodeproj.dart
@@ -8,8 +8,8 @@
 import 'package:path/path.dart' as path;
 
 import '../artifacts.dart';
-import '../base/globals.dart';
 import '../base/process.dart';
+import '../globals.dart';
 import '../runner/flutter_command_runner.dart';
 
 /// A map from file path to file contents.
diff --git a/packages/flutter_tools/lib/src/ios/simulator.dart b/packages/flutter_tools/lib/src/ios/simulator.dart
index f776382..3328191 100644
--- a/packages/flutter_tools/lib/src/ios/simulator.dart
+++ b/packages/flutter_tools/lib/src/ios/simulator.dart
@@ -6,8 +6,8 @@
 import 'dart:convert' show JSON;
 import 'dart:io';
 
-import '../base/globals.dart';
 import '../base/process.dart';
+import '../globals.dart';
 
 const String _xcrunPath = '/usr/bin/xcrun';
 
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
index 2e94cbc..6bc0cd2 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -9,9 +9,9 @@
 
 import '../application_package.dart';
 import '../artifacts.dart';
-import '../base/globals.dart';
 import '../build_configuration.dart';
 import '../device.dart';
+import '../globals.dart';
 import '../toolchain.dart';
 import 'flutter_command_runner.dart';
 
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
index 9e68c79..5b5d6b6 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
@@ -12,9 +12,9 @@
 import '../android/android_sdk.dart';
 import '../artifacts.dart';
 import '../base/context.dart';
-import '../base/globals.dart';
 import '../base/process.dart';
 import '../build_configuration.dart';
+import '../globals.dart';
 import 'version.dart';
 
 const String kFlutterRootEnvironmentVariableName = 'FLUTTER_ROOT'; // should point to //flutter/ (root of flutter/flutter repo)
@@ -45,6 +45,7 @@
     else
       packagesHelp = '\n(required, since the current directory does not contain a "packages" subdirectory)';
     argParser.addOption('package-root',
+        hide: !verboseHelp,
         help: 'Path to your packages directory.$packagesHelp');
     argParser.addOption('flutter-root',
         help: 'The root directory of the Flutter repository. Uses \$$kFlutterRootEnvironmentVariableName if set,\n'
@@ -122,7 +123,10 @@
         defaultsTo: 'out/ios_sim_Release/');
   }
 
-  final String usageFooter = 'Run "flutter -h -v" for verbose help output, including less commonly used options.';
+  String get usageFooter =>
+    'Run "flutter -h -v" for verbose help output, including less commonly used options.\n'
+    '\n'
+    '${doctor.summaryText}';
 
   List<BuildConfiguration> get buildConfigurations {
     if (_buildConfigurations == null)
@@ -191,6 +195,8 @@
 
     if (globalResults['version']) {
       printStatus(getVersion(ArtifactStore.flutterRoot));
+      printStatus('');
+      doctor.summary();
       return new Future<int>.value(0);
     }
 
diff --git a/packages/flutter_tools/lib/src/services.dart b/packages/flutter_tools/lib/src/services.dart
index ca422b7..ce08d09 100644
--- a/packages/flutter_tools/lib/src/services.dart
+++ b/packages/flutter_tools/lib/src/services.dart
@@ -10,7 +10,7 @@
 import 'package:yaml/yaml.dart';
 
 import 'artifacts.dart';
-import 'base/globals.dart';
+import 'globals.dart';
 
 const String _kFlutterManifestPath = 'flutter.yaml';
 const String _kFlutterServicesManifestPath = 'flutter_services.yaml';
