loop instead external interrupt