anchor.diff:      transaction_api:delete(Key, 2000).
   
   %% @doc atomic compare and swap
  -%% @spec test_and_set(key(), value(), value()) -> {fail, Reason} | ok
  +%% @spec test_and_set(key(), value(), value()) -> ok | {fail, term()}
  +-spec test_and_set(key(), value(), value()) -> ok | {fail, Reason::term()}.
   test_and_set(Key, OldValue, NewValue) ->
       TFun = fun(TransLog) ->
                      {Result, TransLog1} = transaction_api:read(Key, TransLog),
  
positive.code:                                        Result2 == ok ->
                                             {{ok, done}, TransLog2};
                                         true ->
                                             {{fail, notfound}, TransLog2}
                                     end;
                                 true ->
                                     {{fail, {key_changed, ReadValue}}, TransLog1}
  
negative.code: 
  %% @doc writes the value of a key
  %% @spec write(key(), value()) -> ok | {fail, term()}
  -spec write(key(), value()) -> ok | {fail, term()}.
  write(Key, Value) ->
      case util:tc(transaction_api, single_write, [Key, Value]) of
          {_Time, commit} ->
  