change template argument
define macros