add a "recursion level" argument to rewrite() to detect loops politely