anchor.diff:  
   %% Callbacks
   init(_Args) ->
  -    {ok, #state { tracking_map = ets:new(torrent_tracking_table,
  -					 [named_table]),
  -		  local_peer_id = generate_peer_id()}}.
  +    {ok, #state { local_peer_id = generate_peer_id()}}.
   
   handle_cast({start_torrent, F}, S) ->
       spawn_new_torrent(F, S),
       {noreply, S};
   handle_cast({stop_torrent, F}, S) ->
  -    error_logger:info_msg("Stopping ~p~n", [F]),
  -    case ets:lookup(S#state.tracking_map, F) of
  -	[{F, _TorrentSup}] ->
  -	    etorrent_t_pool_sup:stop_torrent(F),
  -	    {noreply, S};
  -	[] -> % Torrent already got the 'DOWN' message and was removed
  -	    {noreply, S}
  -	end.
  +    stop_torrent(F, S),
  +    {noreply, S}.
  +
   
   handle_call(_A, _B, S) ->
       {noreply, S}.
   
   handle_info({'DOWN', _R, process, Pid, _Reason}, S) ->
       error_logger:info_msg("Got Down Msg ~p~n", [Pid]),
  -    [[F]] = ets:match(S#state.tracking_map, {'$1', Pid}),
  -    ets:delete(S#state.tracking_map, F),
  +    delete_torrent_by_pid(Pid),
       {noreply, S};
   handle_info(Info, State) ->
       error_logger:info_msg("Unknown message: ~p~n", [Info]),
  
positive.code: 
  %% Internal functions
  spawn_new_torrent(F, S) ->
      {ok, TorrentSup} =
  	etorrent_t_pool_sup:add_torrent(F, S#state.local_peer_id),
      ets:insert(S#state.tracking_map, {F, TorrentSup}),
      erlang:monitor(process, TorrentSup).
  
  %% Utility
  generate_peer_id() ->
      Number = crypto:rand_uniform(0, ?RANDOM_MAX_SIZE),
      Rand = io_lib:fwrite("~B----------", [Number]),
  
negative.code: -define(SERVER, ?MODULE).
  -define(RANDOM_MAX_SIZE, 1000000000).
  
  -record(state, {local_peer_id}).
  
  %% API
  
  