anchor.diff:              dht_node_state:set_slide(
                 State, succ, slide_op:set_phase(NewSlideOp, wait_for_node_update));
           _ ->
  -            rm_loop:subscribe(self(), fun rm_loop:subscribe_node_change_filter/2, fun send_node_change/3),
  +            % note: subscribe with fully qualified function named, i.e. module:fun/arity, to allow successful unsubscribes
  +            rm_loop:subscribe(self(), fun rm_loop:subscribe_node_change_filter/2,
  +                              fun dht_node_move:rm_send_node_change/3),
               rm_loop:update_id(TargetId),
               dht_node_state:set_slide(
                 State, succ, slide_op:set_phase(NewSlideOp, wait_for_node_update))
  
positive.code: %% @doc Send a  node change update message to this module inside the dht_node.
  %%      Will be registered with the dht_node as a node change subscriber.
  %% @see dht_node_state:add_nc_subscr/3
  -spec send_node_change(Pid::comm:erl_local_pid(),
                         OldNeighbors::nodelist:neighborhood(),
                         NewNeighbors::nodelist:neighborhood()) -> ok.
  send_node_change(Pid, _OldNeighbors, NewNeighbors) ->
      NewNode = nodelist:node(NewNeighbors),
      comm:send_local(Pid, {move, node_update, NewNode}).
  
  
negative.code:              slide_op:get_phase(SlideOp) =:= wait_for_node_update of
          true ->
              rm_loop:unsubscribe(self(), fun rm_loop:subscribe_node_change_filter/2,
                                  fun dht_node_move:rm_send_node_change/3),
              TargetId = slide_op:get_target_id(SlideOp),
              case node:id(NewNode) =:= TargetId of
                  true ->
  