implementing Join protocol