more powerful expr_expand