more work on irq_handler