 internal typealias StepActionFunc = () -> Void
 
 open class StepDefinition: QuickSpec {
+
+  private typealias UnmatchedStep = (pattern: Regex, function: StepDefinitionFunc)
+  private typealias MatchedStep = (arguments: StepArguments, function: StepDefinitionFunc)
 
   // MARK: Step definition API
 


    let step = Step(name: description, inFile: filePath, atLine: lineNumber)

    return {
      guard let (args, definition) = stepDefinitions.lazy
        .flatMap({ args -> (StepArguments, StepDefinitionFunc)? in
          let (pattern, function) = args
          return pattern.firstMatch(in: description).map {
            (StepArguments($0), function)
          }
        })
        .first
      else { return nil }


    }
  }

  private static var stepDefinitions: [UnmatchedStep] = []

}

