now checks for failes steps on a thread basis rather than globally. Plus side is that everything will run to the same point, but could potential waste a lot of CPU if we cannot recover from the failed step later on