             
         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 :(

            }
        }
        
        // Get the range of expression to match over - this is all of it
        let range = NSMakeRange(0, expression.characters.count)
        let options:NSMatchingOptions = []
        
        let matchingSteps = steps.filter { (step: Step) -> Bool in
            return step.regex.numberOfMatchesInString(expression, options: options, range: range) > 0
        }
        
        switch matchingSteps.count {
            
        case 0:
            self.dynamicType.printStepDefinitions()

            currentStepDepth--
            
        default:
            // Dump out all the steps found which match so we can work out why
            matches.forEach { NSLog("Matching step : \(String(reflecting: $0.step))") }
            XCTFail("Multiple step definitions found for : '\(ColorLog.red(expression))'")
        }
        
        return self
