anchor.diff:              true  -> RandViewSize + 1;
               false -> RandViewSize
           end,
  -    OtherNeighborhood =
  -        nodelist:mk_neighborhood(NewCache, nodelist:node(Neighborhood),
  -                                 get_pred_list_length(), get_succ_list_length()),
  -    NewNeighborhood = trigger_update(Neighborhood, [], OtherNeighborhood),
  +    NewNeighborhood = trigger_update(Neighborhood, [], NewCache),
       {{node_discovery}, {NewNeighborhood, RandViewSizeNew, NewCache, Churn}}.
   
   -spec trigger_action(State::state())
  
positive.code: % got shuffle request
  handle_custom_message({rm, buffer, OtherNeighbors, RequestPredsMinCount, RequestSuccsMinCount},
     {Neighborhood, RandViewSize, Cache, Churn}) ->
      % use only a subset of the cyclon cache in order not to fill the send buffer
      % with potentially non-existing nodes (in contrast, the nodes from our
      % neighbourhood are more likely to still exist!)
      MyRndView = get_RndView(RandViewSize, Cache),
      MyView = lists:append(MyRndView, nodelist:to_list(Neighborhood)),
      OtherNode = nodelist:node(OtherNeighbors),
      % update outdated node ids:
      {[OtherNodeUpd], MyViewUpd0} = nodelist:lupdate_ids([OtherNode], MyView),
      % do not send nodes already known to the other node:
      {MyViewUpd, _, _OnlyInOther} =
          util:split_unique(MyViewUpd0, nodelist:to_list(OtherNeighbors)),
      NeighborsToSendTmp = nodelist:mk_neighborhood(MyViewUpd, OtherNodeUpd,
                                                    get_pred_list_length(),
                                                    get_succ_list_length()),
      % only send nodes in between the range of the other node's neighborhood
      % but at least a given number
      OtherNodeId = node:id(OtherNode),
      OtherLastPredId = node:id(lists:last(nodelist:preds(OtherNeighbors))),
      OtherLastSuccId = node:id(lists:last(nodelist:succs(OtherNeighbors))),
      OtherRange = intervals:union(
                     intervals:new('(', OtherNodeId, OtherLastSuccId, ')'),
                     intervals:new('(', OtherLastPredId, OtherNodeId, ')')),
      NeighborsToSend =
          nodelist:filter_min_length(
            NeighborsToSendTmp,
            fun(N) -> intervals:in(node:id(N), OtherRange) end,
            RequestPredsMinCount, RequestSuccsMinCount),
      comm:send(node:pidX(nodelist:node(OtherNeighbors)),
                {rm, buffer_response, NeighborsToSend}, ?SEND_OPTIONS),
      NewNeighborhood = trigger_update(Neighborhood, MyRndView, OtherNeighbors),
      {{node_discovery}, {NewNeighborhood, RandViewSize, Cache, Churn}};
  
  handle_custom_message({rm, buffer_response, OtherNeighbors},
     {Neighborhood, RandViewSize, Cache, Churn}) ->
      MyRndView = get_RndView(RandViewSize, Cache),
      NewNeighborhood = trigger_update(Neighborhood, MyRndView, OtherNeighbors),
      % increase RandViewSize (no error detected):
      NewRandViewSize =
          case RandViewSize < config:read(cyclon_cache_size) of
              true ->  RandViewSize + 1;
              false -> RandViewSize
          end,
      {{node_discovery}, {NewNeighborhood, NewRandViewSize, Cache, Churn}};
  
  % we asked another node we wanted to add for its node object -> now add it
  % (if it is not in the process of leaving the system)
  
negative.code: %%            neighborhood may contain updated node IDs though!
  -spec trigger_update(OldNeighborhood::nodelist:neighborhood(),
                       RndView::[node:node_type()],
                       OtherNodes::[node:node_type()])
          -> NewNeighborhood::nodelist:neighborhood().
  trigger_update(OldNeighborhood, MyRndView, OtherNodes) ->
      % update node ids with information from the other node's neighborhood
      OldNeighborhood2 = nodelist:update_ids(OldNeighborhood, OtherNodes),
      NewNeighborhood2 =
          nodelist:add_nodes(OldNeighborhood2, lists:append(MyRndView, OtherNodes),
                             get_pred_list_length(), get_succ_list_length()),
  
      OldView = nodelist:to_list(OldNeighborhood2),
      NewView = nodelist:to_list(NewNeighborhood2),
  