much rewrite