anchor.diff:                      abort_slide(State, SlideOp, changed_parameters, true)
               end;
           not_found ->
  -            setup_slide_with2_not_found(
  -              State, Type, MoveFullId, MyNode, TargetNode, TargetId, Tag,
  +            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.
  -    
  -%% @doc Sets up a new slide operation with the node's successor or predecessor
  -%%      after a request for a slide has been received and setup_slide_with/9
  -%%      checked that the slide to create did not exist yet.
  --spec setup_slide_with2_not_found(State::dht_node_state:state(),
  -        Type::slide_op:type(), MoveFullId::slide_op:id(),
  -        MyNode::node:node_type(), TargetNode::node:node_type(),
  -        TargetId::?RT:key(), Tag::any(), MaxTransportBytes::pos_integer(),
  -        SourcePid::comm:erl_local_pid() | null, First::boolean())
  -            -> dht_node_state:state().
  -setup_slide_with2_not_found(State, Type, MoveFullId,
  -                            MyNode, TargetNode, TargetId, Tag,
  -                            MaxTransportBytes, SourcePid, First) ->
  +
  +-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, TargetId, Type);
  -                   succ -> can_slide_succ(State, TargetId, Type)
  +                   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
  -                       TargetNode =:= dht_node_state:get(State, PredOrSucc),
  -    MoveDone = (PredOrSucc =:= pred andalso node:id(TargetNode) =:= TargetId) orelse
  -               (PredOrSucc =:= succ andalso node:id(MyNode) =:= TargetId),
  +                       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
  
positive.code: 
  %% @doc Sets up a new slide operation with the node's successor or predecessor
  %%      after a request for a slide has been received.
  -spec setup_slide_with(State::dht_node_state:state(), Type::slide_op:type(),
                         MoveFullId::slide_op:id(),
                         MyNode::node:node_type(), TargetNode::node:node_type(),
                         TargetId::?RT:key(), Tag::any(),
                         MaxTransportBytes::pos_integer(),
                         SourcePid::comm:erl_local_pid() | null, First::boolean())
          -> dht_node_state:state().
  setup_slide_with(State, Type, MoveFullId, MyNode,
                   TargetNode, TargetId, Tag, MaxTransportBytes, SourcePid, First) ->
      case get_slide_op(State, MoveFullId) of
          % If there already is a slide operation which was previously set up or
          % due to a second message after a timeout hit on the other node,
  
negative.code:         _ -> comm:send_local(SourcePid, Message)
      end.
  
  %% @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().
  