remember to call timer_poll