add new tools, use more macros