implemented hygienic macro