Just a minor comment, not something that needs to be changed unless you agree (and even then, can be in a later PR), but I'm not a huge fan of having two "broadcast" messages: one being local to implement the `broadcast/2` API, and the other being a remote message sent by other nodes as part of the actual protocol. Wonder if "send_broadcast" would be more appropriate for local message, or perhaps keep that "broadcast" but have "remote_broadcast" or "broadcast_message" for the remove message. Dunno. Again, just clarity point.