anchor.diff:      end,
       {reply, Reply, State};
   
  +handle_call(list, _, #state { table = Table } = State) ->
  +    Traverser = fun(T) ->
  +                        io:format("~p~n", [T]),
  +                        continue
  +                end,
  +    dets:traverse(Table, Traverser),
  +    {reply, ok, State};
   handle_call(update, _, State) ->
       %% Run a persistence operation on all torrents
       %% TODO - in the ETS implementation the state of all inactive
       %%        torrents was flushed out on each persitance operation.
       #state{table=Table} = State,
  -    _ = [begin
  -        TorrentID = proplists:get_value(id, Props),
  -        Filename  = proplists:get_value(filename, Props),
  -        track_torrent(TorrentID, Filename, Table)
  -    end || Props <- etorrent_table:all_torrents()],
  +    [begin
  +         TorrentID = proplists:get_value(id, Props),
  +         Filename  = proplists:get_value(filename, Props),
  +         track_torrent(TorrentID, Filename, Table)
  +     end || Props <- etorrent_table:all_torrents()],
  +    dets:sync(Table),
       {reply, ok, State}.
   
   %% @private
  
positive.code:          code_change/3]).
  
  -record(state, {
      interval=3000,
      table=none :: atom()
  }).
  
  -ignore_xref([{start_link, 0}]).
  
negative.code: -spec start_link() -> {ok, pid()} | ignore | {error, term()}.
  start_link() ->
      gen_server:start_link({local, srv_name()}, ?MODULE, [], []).
  
  %% @doc Query the state of the whole table
  %%   This call will print the contents of the internal table via io
  %% @end
  -spec list() -> ok.
  list() ->
      gen_server:call(srv_name(), list).
  
  %% @doc Query for the state of TorrentID, ID.
  %% <p>The function returns one of several possible values:</p>
  