make macro hygienic