diff --git a/lib/result.dart b/lib/result.dart
index f76481c..903c8a5 100644
--- a/lib/result.dart
+++ b/lib/result.dart
@@ -27,7 +27,7 @@
    * calling `computation`, or an [ErrorResult] with an error thrown by
    * the call.
    */
-  Result(T computation()) {
+  factory Result(T computation()) {
     try {
       return new ValueResult(computation());
     } catch (e, s) {
@@ -71,7 +71,7 @@
   /**
    * Release the result of a captured future.
    *
-   * Converts the [Result] value of the given [future] to a result or error
+   * Converts the [Result] value of the given [future] to a value or error
    * completion of the returned future.
    *
    * If [future] completes with an error, the returned future completes with
@@ -107,6 +107,19 @@
   }
 
   /**
+   * Converts a result of a result to a single result.
+   *
+   * If the result is an error, or it is a `Result` value
+   * which is then an error, then a result with that error is returned.
+   * Otherwise both levels of results are value results, and a single
+   * result with the value is returned.
+   */
+  static Result flatten(Result<Result> result) {
+    if (result.isError) return result;
+    return result.asValue.value;
+  }
+
+  /**
    * Whether this result is a value result.
    *
    * Always the opposite of [isError].
diff --git a/pubspec.yaml b/pubspec.yaml
index 9e5f360..65539f9 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: async
-version: 0.9.2
+version: 1.0.0
 author: Dart Team <misc@dartlang.org>
 description: Utility functions and classes related to the 'dart:async' library.
 homepage: http://www.dartlang.org
diff --git a/test/result_test.dart b/test/result_test.dart
index 53472ec..d101b48 100644
--- a/test/result_test.dart
+++ b/test/result_test.dart
@@ -231,6 +231,26 @@
     c.add(new Result.value(37));
     c.close();
   });
+
+
+  test("flatten error 1", () {
+    Result<int> error = new Result<int>.error("BAD", stack);
+    Result<int> flattened = Result.flatten(error);
+    expectResult(flattened, error);
+  });
+
+  test("flatten error 2", () {
+    Result<int> error = new Result<int>.error("BAD", stack);
+    Result<Result<int>> result = new Result<Result<int>>.value(error);
+    Result<int> flattened = Result.flatten(result);
+    expectResult(flattened, error);
+  });
+
+  test("flatten value", () {
+    Result<Result<int>> result =
+        new Result<Result<int>>.value(new Result<int>.value(42));
+    expectResult(Result.flatten(result), new Result<int>.value(42));
+  });
 }
 
 void expectResult(Result actual, Result expected) {
