outlined joinClient, combined startListening