split out ForkRunner class