anchor.diff:      ok.
   
   state_based_with_aae_test(Config) ->
  -    run(Config, [{mode, state_based},
  -                 {broadcast, false},
  -                 {evaluation_identifier, state_based_with_aae}]),
  +    run(state_based_with_aae_test,
  +        Config,
  +        [{mode, state_based},
  +         {broadcast, false},
  +         {evaluation_identifier, state_based_with_aae}]),
       ok.
   
   state_based_with_aae_and_tree_test(Config) ->
  -    run(Config, [{mode, state_based},
  -                 {broadcast, true},
  -                 {evaluation_identifier, state_based_with_aae_and_tree}]),
  +    run(state_based_with_aae_and_tree_test,
  +        Config,
  +        [{mode, state_based},
  +         {broadcast, true},
  +         {evaluation_identifier, state_based_with_aae_and_tree}]),
       ok.
   
   delta_based_with_aae_test(Config) ->
  -    run(Config, [{mode, delta_based},
  -                 {broadcast, false},
  -                 {evaluation_identifier, delta_based_with_aae}]),
  +    run(delta_based_with_aae_test,
  +        Config,
  +        [{mode, delta_based},
  +         {broadcast, false},
  +         {evaluation_identifier, delta_based_with_aae}]),
       ok.
   
   
  
positive.code: %% Internal functions
  %% ===================================================================
  
  run(Config, Options) ->
      lists:foreach(
          fun(EvalNumber) ->
              configure(
                Config,
                [{evaluation_number, EvalNumber} | Options]
              ),
              wait_for_completion()
          end,
          lists:seq(1, ?EVAL_NUMBER)
      ),
  
      %% Generate transmission plot.
      lasp_plot_gen:generate_plots(Options),
      ok.
  
  configure(Config, Options) ->
      lager:info("Configuring nodes; options: ~p", [Options]),
      Nodes = proplists:get_value(nodes, Config),
  
      %% Settings ads
      lager:info("Enabling ad client simulation on all nodes."),
      lists:foreach(fun(Node) ->
                          ok = rpc:call(Node, lasp_config, set,
                                        [ad_counter_simulation_client, true])
                    end, Nodes),
  
      %% Setting number of impressions
      lager:info("Setting the number of impressions: ~p", [?IMPRESSION_NUMBER]),
      lists:foreach(fun(Node) ->
                          ok = rpc:call(Node, lasp_config, set,
                                        [simulation_event_number, ?IMPRESSION_NUMBER])
                    end, Nodes),
  
      lager:info("Enabling ad server simulation on local node."),
      ok = lasp_config:set(ad_counter_simulation_server, true),
  
  
      %% Setting mode
      Mode = proplists:get_value(mode, Options),
  
      lager:info("Setting mode locally: ~p", [Mode]),
      ok = lasp_config:set(mode, Mode),
  
      lager:info("Setting mode on all nodes: ~p", [Mode]),
      lists:foreach(fun(Node) ->
                          ok = rpc:call(Node, lasp_config, set,
                                        [mode, Mode])
                    end, Nodes),
  
  
      %% Setting broadcast
      Broadcast = proplists:get_value(broadcast, Options),
  
      lager:info("Setting broadcast locally: ~p", [Broadcast]),
      ok = lasp_config:set(broadcast, Broadcast),
  
      lager:info("Setting broadcast on all nodes: ~p", [Broadcast]),
      lists:foreach(fun(Node) ->
                          ok = rpc:call(Node, lasp_config, set,
                                        [broadcast, Broadcast])
                    end, Nodes),
  
  
      %% Setting evaluation identifier
      EvalIdentifier = proplists:get_value(evaluation_identifier, Options),
  
      lager:info("Setting evaluation identifier locally: ~p", [EvalIdentifier]),
      ok = lasp_config:set(evaluation_identifier, EvalIdentifier),
  
      lager:info("Setting evaluation identifier on all nodes: ~p", [EvalIdentifier]),
      lists:foreach(fun(Node) ->
                          ok = rpc:call(Node, lasp_config, set,
                                        [evaluation_identifier, EvalIdentifier])
                    end, Nodes),
  
  
      %% Setting evaluation number
      EvalNumber = proplists:get_value(evaluation_number, Options),
  
      lager:info("Setting evaluation number locally: ~p", [EvalNumber]),
      ok = lasp_config:set(evaluation_number, EvalNumber),
  
      lager:info("Setting evaluation number on all nodes: ~p", [EvalNumber]),
      lists:foreach(fun(Node) ->
                          ok = rpc:call(Node, lasp_config, set,
                                        [evaluation_number, EvalNumber])
                    end, Nodes),
  
  
      %% Enabling instrumentation
      lager:info("Enabling instrumentation locally."),
      ok = lasp_config:set(instrumentation, true),
  
      lager:info("Enabling instrumentation on all nodes."),
      lists:foreach(fun(Node) ->
                          ok = rpc:call(Node, lasp_config, set,
                                        [instrumentation, true])
                    end, Nodes),
  
  
      lager:info("Restarting Lasp on all nodes."),
      lists:foreach(fun(Node) ->
                          lager:info("Restarting ~p and re-joining...", [Node]),
                          ok = rpc:call(Node, application, stop, [lasp]),
                          {ok, _} = rpc:call(Node, application, ensure_all_started,
                                             [lasp]),
                          RunnerNode = lasp_support:runner_node(),
                          lasp_support:join_to(Node, RunnerNode),
                          timer:sleep(4000),
                          {ok, Members} = rpc:call(Node, lasp_peer_service, members, []),
                          {ok, LocalMembers} = lasp_peer_service:members(),
                          lager:info("* Members; ~p", [Members]),
                          lager:info("* LocalMembers; ~p", [LocalMembers])
                    end, Nodes),
  
      ok.
  
  wait_for_completion() ->
      timer:sleep(?EVAL_TIME).
  
negative.code: %% tests
  -compile([export_all]).
  
  -include("lasp.hrl").
  
  -include_lib("common_test/include/ct.hrl").
  -include_lib("eunit/include/eunit.hrl").
  -include_lib("kernel/include/inet.hrl").
  
  -define(EXCHANGE_TIMER, 120).
  
  %% ===================================================================
  %% common_test callbacks
  %% ===================================================================
  
  init_per_suite(_Config) ->
      _Config.
  
  end_per_suite(_Config) ->
      _Config.
  
  init_per_testcase(Case, _Config) ->
      ct:pal("Beginning test case ~p", [Case]),
  
      _Config.
  
  end_per_testcase(Case, _Config) ->
      ct:pal("Ending test case ~p", [Case]),
  
      _Config.
  
  all() ->
      [
  