general rewrite
general rewrite