start a long and painful refactor of FireTask