add keyboard interrupt