         value: value, type: type, argument: argument)
     }
 
-    func optionalArg<T>(
-      _ name: String,
+    func parseArg<T>(
+      _ name: String?,
       _ property: WritableKeyPath<PartialTestConfig, T>,
       defaultValue: T? = nil,
       parser parse: (String) throws -> T? = { _ in nil }
     ) throws {
-      if let value = benchArgs.optionalArgsMap[name] {
+      if let name = name, let value = benchArgs.optionalArgsMap[name] {
         guard !value.isEmpty || defaultValue != nil
           else { throw ArgumentError.missingValue(name) }
 
         c[keyPath: property] = (value.isEmpty)
           ? defaultValue!
           : try checked(parse, value, argument:name)
+      } else if name == nil {
+        c[keyPath: property] = benchArgs.positionalArgs as! T
       }
     }
 

    }

    // Parse command line arguments
    try optionalArg("--iter-scale", \.iterationScale) { Int($0) }
    try optionalArg("--num-iters", \.fixedNumIters) { UInt($0) }
    try optionalArg("--num-samples", \.numSamples)  { Int($0) }
    try optionalArg("--verbose", \.verbose, defaultValue: true)
    try optionalArg("--delim", \.delim) { $0 }
    try optionalArg("--tags", \PartialTestConfig.tags, parser: tags)
    try optionalArg("--skip-tags", \PartialTestConfig.skipTags,
                    defaultValue: [], parser: tags)
    try optionalArg("--sleep", \.afterRunSleep) { Int($0) }
    try optionalArg("--list", \.action, defaultValue: .listTests)
    try optionalArg("--help", \.action, defaultValue: .help(validOptions))

    c.filters = benchArgs.positionalArgs

    // Configure from the command line arguments, filling in the defaults.
    delim = c.delim ?? ","

      var fixedNumIters: UInt?
      var verbose: Bool?
      var action: TestAction?
      var tests: [String]?
    }
    var c = PartialTestConfig()

