rearrange the .h macros and includes with source files to make it better understanding & elegant