anchor.diff:  		  end, Pids),
       ok.
   
  -update_available_peers(IPList, S) ->
  -    NewList = lists:usort(IPList ++ S#state.available_peers),
  -    {ok, S#state{ available_peers = NewList}}.
  -
  -start_new_peers(S) ->
  -    PeersMissing = ?MAX_PEER_PROCESSES - dict:size(S#state.peer_process_dict),
  -    case PeersMissing > 0 of
  -	true ->
  -	    fill_peers(PeersMissing, S);
  -	false ->
  -	    {ok, S}
  -    end.
  +
  +start_new_peers(IPList, State) ->
  +    %% Update the PeerList with the new incoming peers
  +    S = case IPList of
  +	    [] ->
  +		State;
  +	    L when is_list(L) ->
  +		PeerList = lists:usort(IPList ++ State#state.available_peers),
  +		State#state { available_peers = PeerList}
  +	end,
  +
  +    %% Replenish the connected peers.
  +    fill_peers(?MAX_PEER_PROCESSES - dict:size(S#state.peer_process_dict), S).
   
   %%% NOTE: fill_peers/2 and spawn_new_peer/5 tail calls each other.
   fill_peers(0, S) ->
  
positive.code:     {reply, Reply, State}.
  
  handle_cast({add_peers, IPList}, S) ->
      {ok, NS} = update_available_peers(IPList, S),
      {ok, NS2} = start_new_peers(NS),
      {noreply, NS2};
  handle_cast({broadcast_have, Index}, S) ->
      broadcast_have_message(Index, S),
      {noreply, S};
  
negative.code: 	    already_enough_connections
      end.
  
  
  broadcast_have_message(Index, S) ->
      Pids = dict:fetch_keys(S#state.peer_process_dict),
      lists:foreach(fun(Pid) ->
  