Separated the join, message, and quit actions so that we can properly
construct "messaging rounds" ... this of course is where we begin to
diverge from the behavior in the data sets...