rewrite && progress