join comprehensive