rewrite reader simplier&faster