anchor.diff:  listener(CreatorPid, Params, Procs, Result) ->
   	receive
   		{start, N} ->
  -			StartProc = fun(P, PN) -> spawn(?MODULE, hash_process, [self(), P, PN]) end,
  -			NewProcs = [StartProc(Params#params{n = PN}, PN) || PN <- lists:seq(1, N-1)],
  +			SelfPid = self(),
  +			StartProc = fun(P, PN) -> spawn(?MODULE, hash_process, [SelfPid, P, PN]) end,
  +			NewProcs = [StartProc(Params#params{n = PN-1}, PN) || PN <- lists:seq(1, N-1)],
   			listener(CreatorPid, Params, NewProcs, Result); %% just *assume* this is the first thing that happens, so no procs exist by now
   		{ack, SenderPid} ->
   			listener(CreatorPid, Params, [P || P <- Procs, P /= SenderPid], Result);
   		{done, SenderPid, N} ->
  -			NewProcs = [P || P <- Procs, P = SenderPid],
  -			[Pid ! kill || Pid <- Procs], %% send kill to all others now
  +			io:format("Listener got: ~p \n", [N]),
  +			NewProcs = [P || P <- Procs, P /= SenderPid],
  +			[Pid ! kill || Pid <- NewProcs], %% send kill to all others now
   			NewRes = case {Result, N} of
   				{unset, R} -> R;
   				R when N > Result -> R;
  
positive.code: 	end.
  
  find_hash(Base, Zeroes) ->
  	P = {Base, 0, Zeroes},
  	L = spawn(?MODULE, listener, [self(), P, [], unset]),
  	receive
  		{result, ComputedResult} ->
  			ComputedResult
  	end.
  
  test() ->
  	609043 = find_hash("abcdef", 5),
  
negative.code: -module(four_par).
  -export([sfind_hash/2, find_hash/2, listener/4, hash_process/3, test/0, run/0]).
  
  -record(params, {base, n, zeroes}).
  
  