Refactor interrupts, implement run