anchor.diff:  %%--------------------------------------------------------------------
   %% @private
   %% @doc
  -%% Initializes cluster - decides at which nodes components should
  -%% be started (and starts them). Additionally, it sets timer that
  +%% Initializes cluster by starting workers. Additionally sets timer that
   %% initiates checking of cluster state.
   %% @end
   %%--------------------------------------------------------------------
  
positive.code: %% are started under MAIN_WORKER_SUPERVISOR supervision.
  %% @end
  %%--------------------------------------------------------------------
  -spec start_worker(Node :: atom(), Module :: atom(), WorkerArgs :: term(), State :: term()) -> #cm_state{}.
  start_worker(Node, Module, WorkerArgs, State) ->
      try
          {ok, LoadMemorySize} = application:get_env(?APP_NAME, worker_load_memory_size),
          WorkerSupervisorName = ?WORKER_HOST_SUPERVISOR_NAME(Module),
  
negative.code:     erlang:send_after(Interval, self(), {timer, init_cluster}),
      State;
  init_cluster(State = #cm_state{nodes = Nodes, workers = Workers}) ->
      NewState = start_workers_on_nodes(Nodes, Workers, State),
      update_dispatchers_and_dns(NewState).
  
  %%--------------------------------------------------------------------
  %% @private
  %% @doc
  %% Starts workers defined in ?MODULES_WITH_ARGS list on given nodes.
  %% @end
  %%--------------------------------------------------------------------
  -spec start_workers_on_nodes(Nodes :: [node()], RunningWorkers :: {Node :: node(),
      Module :: module(), Args :: term()}, State :: #cm_state{}) -> #cm_state{}.
  start_workers_on_nodes([], _, State) ->
      State;
  start_workers_on_nodes([Node | Nodes], RunningWorkers, State) ->
      {_, RunningModulesOnNode, _} = lists:unzip3(lists:filter(fun
          ({WorkerNode, _, _}) when WorkerNode =:= Node -> true;
          (_) -> false
      end, RunningWorkers)),
      NewState = start_workers_on_node(Node, RunningModulesOnNode, ?MODULES_WITH_ARGS, State),
      start_workers_on_nodes(Nodes, RunningWorkers, NewState).
  
  %%--------------------------------------------------------------------
  %% @private
  %% @doc
  %% Starts workers on given node.
  %% @end
  %%--------------------------------------------------------------------
  -spec start_workers_on_node(Node :: node(), RunningModulesOnNode :: [module()],
      ModulesWithArgs :: [{Module :: module(), Args :: term()}],
      State :: #cm_state{}) -> #cm_state{}.
  start_workers_on_node(_, _, [], State) ->
      State;
  start_workers_on_node(Node, RunningModulesOnNode, [{Module, Args} | ModulesWithArgs], State) ->
      case lists:member(Module, RunningModulesOnNode) of
          true ->
              start_workers_on_node(Node, RunningModulesOnNode, ModulesWithArgs, State);
          false ->
              NewState = start_worker_on_node(Node, Module, Args, State),
              start_workers_on_node(Node, RunningModulesOnNode, ModulesWithArgs, NewState)
      end.
  
  %%--------------------------------------------------------------------
  %% @private
  