correct interrupt handling