moved channel rejoins to it's own listener