add join fn