anchor.diff:  -export([start/1,
            put/3,
            update/3,
  +         update_all/2, %% @todo add this function to behaviour lasp_storage_backend
            get/2,
            reset/1,
            fold/3]).
  
positive.code:                                          {error, atom()}.
  update(Ref, Id, Function) ->
      gen_server:call(Ref, {update, Id, Function}, infinity).
  
  %% @doc Retrieve a record from the backend.
  -spec get(ref(), id()) -> {ok, variable()} | {error, not_found} |
  
negative.code:             Error
      end,
      {reply, Result, State};
  handle_call({update_all, Function}, _From, #state{ref=Ref}=State) ->
      Result = ets:foldl(
          fun({Id, _}=Value, Acc) ->
              {NewValue, InnerResult} = Function(Value),
              case do_put(Ref, Id, NewValue) of
                  ok ->
                      Acc ++ [InnerResult]
              end
          end,
          [],
          Ref
      ),
      {reply, {ok, Result}, State};
  handle_call({fold, Function, Acc0}, _From, #state{ref=Ref}=State) ->
      Acc1 = ets:foldl(Function, Acc0, Ref),
      {reply, {ok, Acc1}, State};
  