improve macro. fix macro bug. try to make hygienic macro