a closure var can be major argument now
macro can be called recursively
clean