split out the abstract suite runner to make it easier for other things to integrate