refactor runner a bit so its easier to follow