support function rule for rewrite