improved interrupt