add macro.h
add utils