defmacro version 1
defmacro version 2