added IRQ processing