add macro and define