use refreshing instead of polling