anchor.diff:  -spec init() -> {ok, amoc_scenario:state()} | {error, Reason :: term()}.
   init() ->
       init_metrics(),
  -    config:get_scenario_settings(?ALL_PARAMETERS).
  +    case config:get_scenario_settings(?ALL_PARAMETERS) of
  +        {ok, Settings} ->
  +            [PublicationRate, NodeCreationRate] = [proplists:get_value(Key, Settings) ||
  +                                                      Key <- [publication_rate, node_creation_rate]],
  +            throttle:start(?NODE_CREATION_THROTTLING, NodeCreationRate),
  +            throttle:start(?PUBLICATION_THROTTLING, PublicationRate),
  +            {ok, Settings};
  +        Error -> Error
  +    end.
   
   -spec start(amoc_scenario:user_id(), amoc_scenario:state()) -> any().
   start(Id, Settings) ->
  
positive.code: 
  -required_variable({'IQ_TIMEOUT',         <<"IQ timeout (milliseconds, def: 10000ms)"/utf8>>}).
  -reqeired_variable({'COORDINATOR_DELAY',  <<"Delay after N subscriptions (milliseconds, def: 0ms)"/utf8>>}).
  -reqeired_variable({'ACTIVATION_DELAY',   <<"Delay between users activation (milliseconds, def: 100ms)"/utf8>>}).
  -required_variable({'PUBLICATION_DELAY',  <<"Delay between items publishing (milliseconds, def: 30000ms)"/utf8>>}).
  -required_variable({'PUBLICATION_SIZE',   <<"Size of additional payload (bytes, def:300)">>}).
  -required_variable({'N_OF_SUBSCRIBERS',   <<"Number of subscriptions for each node (def: 50)"/utf8>>}).
  -required_variable({'HELPERS_POOL_SIZE',  <<"Number of helper processes in the pool (def: 10)"/utf8>>}).
  -required_variable({'CREATION_POLICY',    <<"Nodes created by (def: helper | user)"/utf8>>}).
  -required_variable({'ACTIVATION_POLICY',  <<"Publish after subscribtion of (def: all_nodes | n_nodes | one_node)"/utf8>>}).
  -required_variable({'SCHEDULING_POLICY',  <<"Scheduling policy (def: sync_rcv | syn_req | async)"/utf8>>}).
  -required_variable({'MIM_HOST',           <<"The virtual host served by the server (def: <<\"localhost\">>)"/utf8>>}).
  -required_variable({'PUBSUB_ADDR',        <<"Pubsub service address (def: <<\"pubsub.localhost\">>"/utf8>>}).
  
  -define(ALL_PARAMETERS,[
      {iq_timeout,         'IQ_TIMEOUT',                         10000, positive_integer},
      {coordinator_delay,  'COORDINATOR_DELAY',                      0, nonnegative_integer},
      {activation_delay,   'ACTIVATION_DELAY',                     100, positive_integer},
      {publication_delay,  'PUBLICATION_DELAY',                  30000, nonnegative_integer},
      {publication_size,   'PUBLICATION_SIZE',                     300, nonnegative_integer},
      {n_of_subscribers,   'N_OF_SUBSCRIBERS',                      50, nonnegative_integer},
      {helpers_pool_size,  'HELPERS_POOL_SIZE',                     10, nonnegative_integer},
      {creation_policy,    'CREATION_POLICY',                   helper, [helper, user]},
      {activation_policy,  'ACTIVATION_POLICY',              all_nodes, [all_nodes, n_nodes, one_node]},
      {scheduling_policy,  'SCHEDULING_POLICY',               sync_rcv, [sync_rcv, sync_req, async]},
      {mim_host,           'MIM_HOST',                 <<"localhost">>, bitstring},
      {pubsub_addr,        'PUBSUB_ADDR',       <<"pubsub.localhost">>, bitstring}
  ]).
  
  -define(GROUP_NAME, <<"pubsub_simple_coordinator">>).
  -define(HELPERS_GROUP_NAME, <<"pubsub_simple_helpers">>).
  
  -define(COORDINATOR_ID, 1).
  -define(COORDINATOR_TIMEOUT, 100000).
  
negative.code:     Client = connect_amoc_user(Id),
      case get_role(Id) of
          coordinator -> start_coordinator(Client, Settings);
          user -> start_user(Client)
      end.
  
  