cleanup up interrupt implementation, added docs