updated join interface