support macro substitution for shift too