move polling to model