new refresh system, simplier. close #20