Refactored to use new on_join endpoint