updated interrupt handler