             
         case 1:
             // Get the step and the matches inside it
-            let step = matchingSteps.first!
-            let match = step.regex.firstMatchInString(expression, options: options, range: range)!
+            let (step, match) = matches.first!
             
             // Covert them to strings to pass back into the step function
             // TODO: This should really only need to be a map function :(

            currentStepDepth--
            
        default:
            XCTFail("Multiple steps found for : \(expression)")
        }
        
        return self

            }
        }
        
        // Get the step(s) which match this expression
        let range = NSMakeRange(0, expression.characters.count)
        let matches = steps.map { (step: Step) -> (step:Step, match:NSTextCheckingResult)? in
            if let match = step.regex.firstMatchInString(expression, options: [], range: range) {
                return (step:step, match:match)
            } else {
                return nil
            }
        }.flatMap { $0! }
        
        switch matches.count {
            
        case 0:
            self.dynamicType.printStepDefinitions()
