anchor.diff:      unittest_helper:end_per_suite(Config),
       ok.
   
  +-spec make_groupname(Prefix::string(), Number::integer()) -> pid_groups:groupname().
  +make_groupname(Prefix, Number) ->
  +    lists:flatten(io_lib:format("~s.~B", [Prefix, Number])).
  +
   %% make proposers, acceptors, and learners
  +-spec make(P::pos_integer(), A::pos_integer(), L::pos_integer(), Prefix::string())
  +        -> {Ps::[comm:mypid(),...], As::[comm:mypid(),...], Ls::[comm:mypid(),...]}.
   make(P, A, L, Prefix) ->
       NumMDs = lists:max([P,A,L]),
  -    [ msg_delay:start_link({Prefix, X}) || X <- lists:seq(1,NumMDs)],
  -    Ps = [ comm:make_global(element(2, proposer:start_link({Prefix, X})))
  -           || X <- lists:seq(1,P)],
  -    As = [ comm:make_global(element(2, acceptor:start_link({Prefix, X})))
  -           || X <- lists:seq(1,A)],
  -    Ls = [ comm:make_global(element(2, learner:start_link({Prefix, X})))
  -           || X <- lists:seq(1,L)],
  +    _  = [ msg_delay:start_link(make_groupname(Prefix, X))
  +             || X <- lists:seq(1, NumMDs)],
  +    Ps = [ comm:make_global(element(2, proposer:start_link(make_groupname(Prefix, X))))
  +             || X <- lists:seq(1, P)],
  +    As = [ comm:make_global(element(2, acceptor:start_link(make_groupname(Prefix, X))))
  +             || X <- lists:seq(1, A)],
  +    Ls = [ comm:make_global(element(2, learner:start_link(make_groupname(Prefix, X))))
  +             || X <- lists:seq(1,L)],
       {Ps, As, Ls}.
   
  +-spec collector(Count::pos_integer(), Owner::pid()) -> pid().
   collector(Count, Owner) ->
       spawn(fun() ->
                     collect(Count),
                     Owner ! done
             end).
   
  +-spec collect(non_neg_integer()) -> ok.
   collect(0) ->
       ok;
   collect(Count) ->
  
positive.code:     %% should receive an abort
      receive {learner_decide, cpaxid123, _, Res1} = Any -> io:format("Expected abort Received ~p~n", [Any]) end,
  
      gen_component:bp_barrier(element(3, Proposer1)),
      gen_component:bp_del(element(3, Proposer1), bp1),
      gen_component:bp_cont(element(3, Proposer1)),
  
      %% should receive also an abort as proposer1 was hold
      receive {learner_decide, cpaxid123, _, Res2} = Any2 ->
  
negative.code: 
      %% start paxosids in the components
      learner:start_paxosid(hd(Learners), paxid124, Majority, comm:this(), cpaxid124),
      _ = [ acceptor:start_paxosid(X, paxid124, Learners) || X <- Acceptors ],
      [ Proposer1, Proposer2 ] = Proposers,
      %% set some breakpoints
      gen_component:bp_set(comm:make_local(Proposer2), acceptor_ack, bp2),
      %% initiate full paxos
      proposer:start_paxosid(Proposer1, paxid124, Acceptors,
                             prepared, Majority, length(Proposers), 1),
  