fleshed out interrupt.c