add join template function