anchor.diff:  			server_loop(Bots)
   	end.
   
  -distribute_work([],[],_) -> ok;
  -distribute_work(BotList, Pairs, Len) ->
  +distribute_work([],[],_,_) -> ok;
  +distribute_work(BotList, Pairs, Crypted, Len) ->
   	[CurPair|RestPairs] = Pairs,
   	[{Pid,Nick}|RestBots] = BotList,
  -	Pid ! {decrypt, CurPair, Len},
  -	distribute_work(RestBots,RestPairs,Len).
  +	Pid ! {decrypt, CurPair, Crypted, Len},
  +	distribute_work(RestBots,RestPairs,Crypted,Len).
  +
  +botnick(Bots,Pid) ->
  +	{ok, Nick} = dict:find(Pid,Bots),
  +	Nick.
   
   client_loop() ->
   	receive
  -		{decrypt, {First, Last}, Len} ->
  -			io:format("Working on decrypting string of length ~p...~n",[Len]),
  -
  +		{decrypt, {Min, Max}, Crypted, Len} ->
  +			io:format("Attempting decryption of string of length ~p...~n",[Len]),
  +			analyze(Crypted, Min, Max),
   			client_loop();
   		{parrot, Text, Nick} ->
   			io:format("My name is ~p and I go ~p~n", [Nick,Text]),
  
positive.code: 			server_loop(Bots);
  		{From, {decrypt, Crypted, Len}} ->
  			Pairs = pwd:partition_alphabet(Len, dict:size(Bots)),
  			distribute_work(dict:to_list(Bots), Pairs, Len),
  			From ! {dist, ok},
  			server_loop(Bots);
  		{From, {stop_all}} ->
  			dict:map(fun(Pid,Nick) -> Pid ! {bye} end, Bots),
  
negative.code: 	rpc({stop_all}).
  
  % note: rpc:call below is a function on the rpc lib and has nothing to do with the homegrown rpc() above
  % rpc:call/2 allows a remote shell using the same password as the local shell to make rpc calls on local functions
  register_me(Server, Nick) ->
  	rpc:call(Server, dist, enlist, Nick).
  
  enlist(Nick) ->
  	Reply = rpc({enlist, Nick}),
  		case Reply of
  			ok ->
  				io:format("OK, I'm running as ~p on pid ~p...~n",[Nick, self()]),
  