anchor.diff:              false -> ?DBG_ASSERT(intervals:in(node:id(NewMe), nodelist:succ_range(Neighborhood))),
                        intervals:new('(', OldId, NewId, ')')
           end,
  -    NewNeighborhood2 =
  -        nodelist:filter(NewNeighborhood1,
  -                        fun(N) -> not intervals:in(node:id(N), I) end,
  -                        fun(N) -> contact_new_nodes([N]) end),
  +    NewNeighborhood2 = remove_neighbors_in_interval(NewNeighborhood1, I, null),
       
       % only send pred and succ the new node
       Message = {rm, {update_node, NewMe}},
  
positive.code:                   SuccsSucc::node:node_type())
          -> {ChangeReason::rm_loop:reason(), state()}.
  remove_succ(State, OldSucc, SuccsSucc) ->
      % in contrast to remove_pred/3, let rm repair a potentially wrong new succ
      % on its own
      {{graceful_leave, succ, OldSucc},
       update_nodes(State, [SuccsSucc], [OldSucc], null)}.
  
  %% @doc Removes the given node as a result from a graceful leave only!
  -spec remove_node(State::state(), NodePid::comm:mypid())
  
negative.code:     % -> try to re-add them with updated information though
      NewNeighborhood1 = element(1, State2),
      I = intervals:new('(', node:id(PredsPred), nodelist:nodeid(NewNeighborhood1), ')'),
      NewNeighborhood2 = remove_neighbors_in_interval(NewNeighborhood1, I, PredsPred),
      State3 = setelement(1, State2, NewNeighborhood2),
      {{graceful_leave, pred, OldPred}, State3}.
  
  