anchor.diff:  
   -spec respond([agent()], [pid()], arenas(), sim_params(), config()) -> list().
   respond(Agents, Froms, Arenas, SP, Cf) when length(Agents) >= length(Froms) ->
  -    [gen_server:reply(From, Agent) || {From, Agent} <- mas_misc_util:shortest_zip(Froms, Agents)],
  -    [spawn(mas_conc_agent, start, [Agent, Arenas, SP, Cf]) || Agent <- lists:nthtail(length(Froms), Agents)];
  +    [gen_server:reply(From, Agent)
  +     || {From, Agent} <- mas_misc_util:shortest_zip(Froms, Agents)],
  +    [spawn(mas_conc_agent, start, [Agent, Arenas, SP, Cf])
  +     || Agent <- lists:nthtail(length(Froms), Agents)];
   
  -respond(Agents, Froms, _Arenas, _SimParams, _Config) when length(Agents) =< length(Froms) ->
  -    [gen_server:reply(From, Agent) || {From, Agent} <- mas_misc_util:shortest_zip(Froms, Agents)],
  -    [gen_server:reply(From, close) || From <- lists:nthtail(length(Agents), Froms)].
  +respond(Agents, Froms, _Arenas, _SimParams, _Config)
  +  when length(Agents) =< length(Froms) ->
  +    [gen_server:reply(From, Agent)
  +     || {From, Agent} <- mas_misc_util:shortest_zip(Froms, Agents)],
  +    [gen_server:reply(From, close)
  +     || From <- lists:nthtail(length(Agents), Froms)].
  
positive.code:                 config = Cf}, Cf#config.arena_timeout}.
  
  
  -spec handle_call(Request :: term(), From :: {pid(), Tag :: term()}, State :: #state{}) ->
               {reply, Reply :: term(), NewState :: #state{}} |
               {reply, Reply :: term(), NewState :: #state{}, timeout() | hibernate} |
               {noreply, NewState :: #state{}} |
               {noreply, NewState :: #state{}, timeout() | hibernate} |
               {stop, Reason :: term(), Reply :: term(), NewState :: #state{}} |
               {stop, Reason :: term(), NewState :: #state{}}.
  
  handle_call({interact, _Agent}, _From, cleaning) ->
      {reply, the_end, cleaning, ?CLOSING_TIMEOUT};
  
  handle_call({interact, Agent}, From, St = #state{sim_params = SP, config = Cf}) ->
      Waitlist = [Agent|St#state.waitlist],
      Froms = [From|St#state.agentFroms],
      case length(Waitlist) of
          ?AGENT_THRESHOLD ->
              NewAgents = mas_misc_util:meeting_proxy({St#state.interaction, Waitlist}, mas_concurrent, SP, Cf),
              respond(NewAgents, Froms, St#state.arenas, SP, Cf),
  
              NewCounter = St#state.counter + length(Waitlist), % tu blad?!
              NewFunstats = mas_misc_util:count_funstats(NewAgents, St#state.funstats),
  
              case mas_misc_util:log_now(St#state.lastLog, Cf) of
                  {yes, NewLog} ->
                      mas_logger:log_countstat(St#state.supervisor, St#state.interaction, NewCounter),
                      [mas_logger:log_funstat(St#state.supervisor, StatName, Val) || {StatName, _MapFun, _ReduceFun, Val} <- NewFunstats],
                      {noreply,St#state{waitlist = [],
                                           agentFroms = [],
                                           lastLog = NewLog,
                                           funstats = NewFunstats,
                                           counter = 0}, Cf#config.arena_timeout};
                  notyet ->
                      {noreply,St#state{waitlist = [],
                                           agentFroms = [],
                                           funstats = NewFunstats,
                                           counter = NewCounter}, Cf#config.arena_timeout}
              end;
          _ ->
              {noreply, St#state{agentFroms = Froms, waitlist = Waitlist}, Cf#config.arena_timeout}
      end;
  
  handle_call({arenas, Arenas}, _From, St = #state{config = Cf}) ->
  
negative.code:     Pid;
  
  start_link(Supervisor, Interaction, SP, Cf) ->
      {ok, Pid} =
          gen_server:start_link(?MODULE, [Supervisor, Interaction, SP, Cf], []),
      Pid.
  
  %% @doc Sends a request with given agent to this arena
  