avoid duplicate evaluation in macro