use def instead of set! for defn macro to avoid global leaks
use def instead of set! for defn macro to avoid global leaks
ignore some more