                 }
             }
             
-            return .Success(Box(val:tuple))
+            return success(tuple)
         }.map { (tuple:([OptionData], [String])) -> ([Option:[String]], [String]) in
             let (optionsArray, args) = tuple
             var dict = [Option:[String]]()

                        /* Sanity prevails, the next element is not an option trigger. */
                        let shortOptArray = optArray[0 ..< optArray.count - 1]
                        let newOption = OptionData(definition: lastOpt.option, parameters: lastOpt.parameters + [next])
                        return .Success(Box(val: (shortOptArray + [newOption], args)))
                    }
                    
                    /* No need for more parameters; parse the next option. */


/// Represents the result of a successful parse.
///
/// The dictionary is a mapping of encountered options to their parameters, where no-parameter
/// options map to an empty array.. The array is the list of remaining parameters.
public typealias ParseData = ([Option:[String]], [String])

/// The option parser.
