runs needs timers or polling