anchor.diff:          _ -> comm:send_local(SourcePid, Message)
       end.
   
  -%% @doc Aborts the given slide operation. Pred_or_Succ determines whether the
  -%%      SlideOp is a slide with the predecessor or successor of our node. We
  -%%      can thus notify the proper node of the abort.
  +%% @doc Aborts the given slide operation. Assume the SlideOp has already been
  +%%      set in the dht_node and resets the according slide in its state to
  +%%      null.
   %% @see abort_slide/8
   -spec abort_slide(State::dht_node_state:state(), SlideOp::slide_op:slide_op(),
           Reason::abort_reason(), NotifyNode::boolean()) -> dht_node_state:state().
  
positive.code:     MoveFullId = util:get_global_uid(),
      MyNode = dht_node_state:get(State, node),
      TargetNode = dht_node_state:get(State, PredOrSucc),
      setup_slide_with(State, {slide, PredOrSucc, SendOrReceive},
                       MoveFullId, MyNode, TargetNode, TargetId, Tag,
                       get_max_transport_bytes(), SourcePid, true).
  
  %% @doc Creates a slide with the node's predecessor. The predecessor will
  %%      change its ID to TargetId, SourcePid will be notified about the result.
  
negative.code:                     abort_slide(State, SlideOp, changed_parameters, true)
              end;
          not_found ->
              Command = check_setup_slide_not_found(
                          State, Type, MyNode, TargetNode, TargetId),
              exec_setup_slide_not_found(
                Command, State, Type, MoveFullId, TargetNode, TargetId, Tag,
                MaxTransportBytes, SourcePid, First);
          {wrong_neighbor, _PredOrSucc, SlideOp} -> % wrong pred or succ
              abort_slide(State, SlideOp, wrong_pred_succ_node, true)
      end.
  
  -type command() :: {abort, abort_reason()} |
                     {ok, slide, pred | succ, 'send' | 'rcv'} |
                     {ok, jump, 'send'} |
                     {ok, leave, 'send'} |
                     {ok, move_done}.
  
  %% @doc Checks whether a new slide operation with the node's successor or
  %%      predecessor and the given parameters can be set up.
  %%      Note: this does not check whether such a slide already exists.
  -spec check_setup_slide_not_found(State::dht_node_state:state(),
          Type::slide_op:type(), MyNode::node:node_type(),
          TargetNode::node:node_type(), TargetId::?RT:key()) -> command().
  check_setup_slide_not_found(State, Type, MyNode, TNode, TId) ->
      PredOrSucc = slide_op:get_predORsucc(Type),
      CanSlide = case PredOrSucc of
                     pred -> can_slide_pred(State, TId, Type);
                     succ -> can_slide_succ(State, TId, Type)
                 end,
      % correct pred/succ info? did pred/succ know our current ID (compare node info)
      NodesCorrect = MyNode =:= dht_node_state:get(State, node) andalso
                         TNode =:= dht_node_state:get(State, PredOrSucc),
      MoveDone = (PredOrSucc =:= pred andalso node:id(TNode) =:= TId) orelse
                 (PredOrSucc =:= succ andalso node:id(MyNode) =:= TId),
      case CanSlide andalso NodesCorrect andalso not MoveDone of
          true ->
              case slide_op:is_leave(Type, 'send') of
  