anchor.diff:                  SlideOp1 = slide_op:cancel_timer(SlideOp), % cancel previous timer
                   finish_delta_ack1(State, SlideOp1, NextOpMsg)
           end,
  -    safe_operation(WorkerFun, MyState, MoveFullId, [wait_for_delta_ack], both, delta_ack);
  +    safe_operation(WorkerFun, MyState, MoveFullId, [wait_for_delta_ack], delta_ack);
   
   process_move_msg({move, {send_error, Target, Message, _Reason}, {timeouts, Timeouts}} = _Msg, MyState) ->
       ?TRACE1(_Msg, MyState),
  
positive.code:                 SlideOp1 = slide_op:cancel_timer(SlideOp), % cancel previous timer
                  prepare_send_delta1(State, SlideOp1)
          end,
      safe_operation(WorkerFun, MyState, MoveFullId, [wait_for_data_ack], both, data_ack);
  
  % delta from neighbor
  process_move_msg({move, delta, ChangedData, MoveFullId} = _Msg, MyState) ->
  
negative.code:     WorkerFun::fun((SlideOp::slide_op:slide_op(), State::dht_node_state:state())
                      -> dht_node_state:state()),
      State::dht_node_state:state(), MoveFullId::slide_op:id(),
      WorkPhases::[slide_op:phase(),...] | all,
      MoveMsgTag::atom()) -> dht_node_state:state().
  safe_operation(WorkerFun, State, MoveFullId, WorkPhases, MoveMsgTag) ->
      case get_slide(State, MoveFullId) of
          {_, _PredOrSucc, SlideOp} when MoveMsgTag =:= crashed_node ->
              WorkerFun(SlideOp, State);
          {ok, _PredOrSucc, SlideOp} ->
              case WorkPhases =:= all orelse lists:member(slide_op:get_phase(SlideOp), WorkPhases) of
                  true -> WorkerFun(SlideOp, State);
                  _    ->
                      log:log(info, "[ dht_node_move ~.0p ] unexpected message ~.0p received in phase ~.0p",
                              [comm:this(), MoveMsgTag, slide_op:get_phase(SlideOp)]),
                      State
              end;
          not_found when MoveMsgTag =:= send_error_retry ->
              State;
  