move work out of interrupt handler (which is safer as well)