anchor.diff:  
   handle_info({'EXIT', Pid, Reason}, S) ->
       % Pid has exited for some reason, handle it accordingly
  -    D = dict:erase(Pid, S#state.peer_process_dict),
       case Reason of
   	normal ->
  +	    D = dict:erase(Pid, S#state.peer_process_dict),
   	    {ok, NS} = start_new_peers(S#state{peer_process_dict = D}),
   	    {noreply, NS};
   	shutdown ->
   	    {stop, shutdown, S};
   	R ->
  -	    {_, _, PeerId} = dict:fetch(Pid, S#state.peer_process_dict),
  -	    Bad = dict:update(PeerId, fun(L) -> [R | L] end,
  +	    PI = dict:fetch(Pid, S#state.peer_process_dict),
  +	    D  = dict:erase(Pid, S#state.peer_process_dict),
  +	    Bad = dict:update(PI#peer_info.peer_id, fun(L) -> [R | L] end,
   			      [R], S#state.bad_peers),
   	    {ok, NS} = start_new_peers(S#state{peer_process_dict = D,
   					       bad_peers = Bad}),
  
positive.code: 	        state_pid = none,
  	        file_system_pid = none}).
  
  -define(MAX_PEER_PROCESSES, 40).
  
  %%====================================================================
  
negative.code: 	    torrent_peer:connect(Pid, S#state.our_peer_id),
  	    % TODO: Remove this hack:
  	    torrent_peer:unchoke(Pid),
  	    PI = #peer_info{ip = IP, port = Port, peer_id = PeerId},
  	    D = dict:store(Pid, PI, S#state.peer_process_dict),
  	    fill_peers(N-1, S#state{ peer_process_dict = D})
      end.
  
  