finished interrupt implementation