use interrupt for sleep