add single_arg macro