anchor.diff:      ?equals(api_tx:write(Key, Initial), {ok}),
       prop_add_on_nr2(Key, true, Initial, ToAdd).
   
  --spec prop_add_on_nr2(Key::client_key(), Existing::boolean(), Initial::client_value(), ToAdd::client_value()) -> true | no_return().
  -prop_add_on_nr2(Key, Existing, Initial, ToAdd) ->
  -    if (not erlang:is_number(Initial)) orelse
  -           (not erlang:is_number(ToAdd)) ->
  -           ?equals(api_tx:add_on_nr(Key, ToAdd), {fail, not_a_number});
  -       true ->
  -           ?equals(api_tx:add_on_nr(Key, ToAdd), {ok}),
  -           {ok, Number} = api_tx:read(Key),
  -           case Existing of
  -               false -> ?equals(Number, ToAdd);
  -               % note: Initial+ToAdd could be float when Initial is not and thus Number is neither
  -               true when ToAdd == 0 -> ?equals(Number, Initial);
  -               _     -> ?equals(Number, (Initial + ToAdd))
  -           end
  -    end.
  -
   tester_add_on_nr(_Config) ->
       tester:test(?MODULE, prop_add_on_nr, 3, 10000).
   
  
positive.code: tester_write_read(_Config) ->
      tester:test(?MODULE, prop_write_read, 3, 10000).
  
  -spec prop_add_del_on_list_not_existing(Key::client_key(), ToAdd::[client_value()], ToRemove::[client_value()]) -> true | no_return().
  prop_add_del_on_list_not_existing(Key, ToAdd, ToRemove) ->
      OldValue = case api_tx:read(Key) of
                     {ok, Value} -> Value;
                     _ -> []
                 end,
      prop_add_del_on_list2(Key, OldValue, ToAdd, ToRemove).
  
  tester_add_del_on_list_not_existing(_Config) ->
      tester:test(?MODULE, prop_add_del_on_list_not_existing, 3, 10000).
  
  -spec prop_add_del_on_list(Key::client_key(), Initial::client_value(), ToAdd::[client_value()], ToRemove::[client_value()]) -> true | no_return().
  prop_add_del_on_list(Key, Initial, ToAdd, ToRemove) ->
      ?equals(api_tx:write(Key, Initial), {ok}),
      prop_add_del_on_list2(Key, Initial, ToAdd, ToRemove).
  
  -spec prop_add_del_on_list2(Key::client_key(), Initial::client_value(), ToAdd::client_value(), ToRemove::client_value()) -> true | no_return().
  prop_add_del_on_list2(Key, Initial, ToAdd, ToRemove) ->
      if (not erlang:is_list(Initial)) orelse
             (not erlang:is_list(ToAdd)) orelse
             (not erlang:is_list(ToRemove)) ->
             ?equals(api_tx:add_del_on_list(Key, ToAdd, ToRemove), {fail, not_a_list});
         true ->
             ?equals(api_tx:add_del_on_list(Key, ToAdd, ToRemove), {ok}),
             {ok, List} = api_tx:read(Key),
             SortedList = lists:sort(fun util:'=:<'/2, List),
             ?equals(SortedList, lists:sort(fun util:'=:<'/2, util:minus_first(lists:append(Initial, ToAdd), ToRemove)))
      end.
  
  tester_add_del_on_list(_Config) ->
      tester:test(?MODULE, prop_add_del_on_list, 4, 10000).
  
  -spec prop_add_del_on_list_maybe_invalid(Key::client_key(), Initial::client_value(), ToAdd::client_value(), ToRemove::client_value()) -> true | no_return().
  prop_add_del_on_list_maybe_invalid(Key, Initial, ToAdd, ToRemove) ->
      ?equals(api_tx:write(Key, Initial), {ok}),
      prop_add_del_on_list2(Key, Initial, ToAdd, ToRemove).
  
  tester_add_del_on_list_maybe_invalid(_Config) ->
      tester:test(?MODULE, prop_add_del_on_list_maybe_invalid, 4, 10000).
  
  -spec prop_add_on_nr_not_existing(Key::client_key(), ToAdd::number()) -> true | no_return().
  prop_add_on_nr_not_existing(Key, ToAdd) ->
  
negative.code: 
  tester_add_on_nr_maybe_invalid(_Config) ->
      tester:test(?MODULE, prop_add_on_nr_maybe_invalid, 3, 10000).
  
  -spec prop_test_and_set2(Key::client_key(), Existing::boolean(), RealOldValue::client_value(), OldValue::client_value(), NewValue::client_value()) -> true | no_return().
  prop_test_and_set2(Key, Existing, RealOldValue, OldValue, NewValue) ->
  