unfinished defmacro with defmethod with dynamic function name