add defmacro