anchor.diff:      Mods = partisan_config:get(broadcast_mods, []),
   
       Res = start_link(Members, InitEagers, InitLazys, Mods, Opts),
  +
  +    %% We subscribe to the membership change events
       partisan_peer_service:add_sup_callback(fun ?MODULE:update/1),
  +
       Res.
   
   
  +%% -----------------------------------------------------------------------------
   %% @doc Starts the broadcast server on this node. `InitMembers' must be a list
   %% of all members known to this node when starting the broadcast server.
   %% `InitEagers' are the initial peers of this node for all broadcast trees.
  
positive.code:             kill_exchange(Exchange),
              [Exchange]
      end;
  cancel_exchanges(Which, Exchanges) ->
      Filter = exchange_filter(Which),
      ToCancel = [Ex || Ex <- Exchanges, Filter(Ex)],
      kill_exchanges(ToCancel).
  
  kill_exchanges(Exchanges) ->
      _ = [kill_exchange(Exchange) || Exchange <- Exchanges],
      Exchanges.
  
  kill_exchange({_, _, _, ExchangePid}) ->
      exit(ExchangePid, cancel_exchange).
  
negative.code:     gen_server:cast(?SERVER, {broadcast, MessageId, Payload, Mod}).
  
  
  %% -----------------------------------------------------------------------------
  %% @doc Notifies broadcast server of membership update
  %% @end
  %% -----------------------------------------------------------------------------
  -spec update([node()]) -> ok.
  
  update(LocalState0) ->
      LocalState = partisan_peer_service:decode(LocalState0),
      gen_server:cast(?SERVER, {update, LocalState}).
  
  
  %% -----------------------------------------------------------------------------
  %% @doc Returns the broadcast servers view of full cluster membership.
  %% Wait indefinitely for a response is returned from the process.
  