anchor.diff:                   ({activate_cyclon}, state_inactive()) -> {'$gen_component', [{on_handler, Handler::on_active}], State::state_active()}.
   on_inactive({activate_cyclon}, {inactive, QueuedMessages, TriggerState}) ->
       log:log(info, "[ Cyclon ~.0p ] activating...~n", [comm:this()]),
  -    rm_loop:subscribe(self()),
  +    rm_loop:subscribe(self(), fun rm_loop:subscribe_default_filter/2, fun cyclon:rm_send_changes/3),
       request_node_details([node, pred, succ]),
       comm:send_local_after(100, self(), {check_state}),
       TriggerState2 = trigger:now(TriggerState),
  
positive.code: % functions gen_component, the trigger and the config module use
  -export([init/1, on_inactive/2, on_active/2,
           activate/0, deactivate/0,
           get_shuffle_interval/0, check_config/0]).
  
  % helpers for creating getter messages:
  -export([get_subset_rand/1, get_subset_rand_next_interval/1]).
  
negative.code:     TriggerState2 = trigger:next(TriggerState),
      {NewCache, Node, Cycles + 1, TriggerState2};
  
  on_active({rm_changed, NewNode}, {Cache, _OldNode, Cycles, TriggerState}) ->
      {Cache, NewNode, Cycles, TriggerState};
  
  on_active({check_state}, State) ->
      check_state(State),
  