@SuppressWarnings("unchecked")
public <T> T run(final T steps) throws IOException {
useDefaultStepFactoryIfUnassigned();
TestDataSource testdata = new CSVTestDataSource(testDataSource, separator);
StepEventBus.getEventBus().useExamplesFrom(dataTable(testdata));
Class<?> scenarioStepsClass = steps.getClass().getSuperclass();
List<T> instanciatedSteps = (List<T>) testdata.getInstanciatedInstancesFrom(scenarioStepsClass, factory);
DataDrivenStepFactory dataDrivenStepFactory = new DataDrivenStepFactory(factory);
T stepsProxy = (T) dataDrivenStepFactory.newDataDrivenSteps(scenarioStepsClass, instanciatedSteps);
return stepsProxy;