Add defmacro and when