If you create a new implementation that changes the multicast transport protocol but does not add any functionality, you get a rudimentary version of a caucus. You can send and receive messages, note which messages are leave messages, and get the identity of a caucus member. If you want the same features that the standard implementation provides--such as pause and resume messages, or the ability to distinguish between several different types of messages--you need to implement this functionality using your transport protocol.