make fn and defn macros, no longer emit directly