      - parameter x: the value to the transformed. Note this is optional, as it
      can be injected after initialization, but before execution.
      - parameter transform: a closure which maps a non-optional T to U!. Note
-     that this closure will only be run if the requirement is non-nil, but that
-     it is possible to map a non-nil requirement to a nil result. The result
-     is avaiable as the `result` property of type U?
+     that this closure will only be run if the requirement is non-nil.
     */
-    public init(x: T? = .None, transform: T -> U?) {
+    public init(x: T? = .None, transform: T -> U) {
         self.requirement = x
         self.transform = transform
         super.init()

import Foundation

/**
 # Flat Map Operation
 
 An `Operation` subclass which accepts a map transform closure. Because it
 conforms to both `ResultOperationType` and `AutomaticInjectionOperationType`

     ```

    */
    public func mapOperation<U>(transform: Result -> U) -> MapOperation<Result, U> {
        let map: MapOperation<Result, U> = MapOperation(transform: transform)
        map.injectResultFromDependency(self) { operation, dependency, errors in
            if errors.isEmpty {
                operation.requirement = dependency.result
