anchor.diff:              meta = ProcessMeta
           })
       end,
  -    lists:foreach(FWrite, ProcessesInfo).
  -
  --spec purge_double_processes(
  -    ConflictingProcessCallbackModule :: atom(),
  -    ConflictingProcessCallbackFunction :: atom(),
  -    DoubleProcessesInfo :: list()
  +    lists:foreach(FWrite, RegistryProcessesInfo).
  +
  +-spec purge_registry_double_processes(
  +    RegistryConflictingProcessCallbackModule :: atom(),
  +    RegistryConflictingProcessCallbackFunction :: atom(),
  +    DoubleRegistryProcessesInfo :: list()
   ) -> ok.
  -purge_double_processes(undefined, _, DoubleProcessesInfo) ->
  +purge_registry_double_processes(undefined, _, DoubleRegistryProcessesInfo) ->
       F = fun({Key, LocalProcessPid, _LocalProcessMeta}) ->
           error_logger:warning_msg("Found a double process for ~s, killing it on local node ~p", [Key, node()]),
           exit(LocalProcessPid, kill)
       end,
  -    lists:foreach(F, DoubleProcessesInfo);
  -purge_double_processes(ConflictingProcessCallbackModule, ConflictingProcessCallbackFunction, DoubleProcessesInfo) ->
  +    lists:foreach(F, DoubleRegistryProcessesInfo);
  +purge_registry_double_processes(RegistryConflictingProcessCallbackModule, RegistryConflictingProcessCallbackFunction, DoubleRegistryProcessesInfo) ->
       F = fun({Key, LocalProcessPid, LocalProcessMeta}) ->
           spawn(
               fun() ->
                   error_logger:warning_msg("Found a double process for ~s, about to trigger callback on local node ~p", [Key, node()]),
  -                ConflictingProcessCallbackModule:ConflictingProcessCallbackFunction(Key, LocalProcessPid, LocalProcessMeta)
  +                RegistryConflictingProcessCallbackModule:RegistryConflictingProcessCallbackFunction(Key, LocalProcessPid, LocalProcessMeta)
               end)
       end,
  -    lists:foreach(F, DoubleProcessesInfo).
  +    lists:foreach(F, DoubleRegistryProcessesInfo).
   
   -spec stitch_group_tab(RemoteNode :: atom()) -> ok.
   stitch_group_tab(RemoteNode) ->
       %% get remote processes info
  -    RemoteGroupsInfo = rpc:call(RemoteNode, ?MODULE, get_groups_info_of_node, [RemoteNode]),
  +    RemoteGroupsRegistryProcessesInfo = rpc:call(RemoteNode, ?MODULE, get_groups_processes_info_of_node, [RemoteNode]),
       %% get local processes info
  -    LocalGroupsInfo = get_groups_info_of_node(node()),
  +    LocalGroupsRegistryProcessesInfo = get_groups_processes_info_of_node(node()),
       %% write
  -    write_remote_groups_to_local(RemoteNode, RemoteGroupsInfo),
  -    write_local_groups_to_remote(RemoteNode, LocalGroupsInfo).
  -
  --spec get_groups_info_of_node(Node :: atom()) -> list().
  -get_groups_info_of_node(Node) ->
  +    write_remote_groups_processes_info_to_local(RemoteNode, RemoteGroupsRegistryProcessesInfo),
  +    write_local_groups_processes_info_to_remote(RemoteNode, LocalGroupsRegistryProcessesInfo).
  +
  +-spec get_groups_processes_info_of_node(Node :: atom()) -> list().
  +get_groups_processes_info_of_node(Node) ->
       %% build match specs
       MatchHead = #syn_groups_table{name = '$1', pid = '$2', node = '$3'},
       Guard = {'=:=', '$3', Node},
  
positive.code:     %% select
      mnesia:dirty_select(syn_registry_table, [{MatchHead, [Guard], [ProcessInfoFormat]}]).
  
  -spec write_processes_info_to_node(Node :: atom(), ProcessesInfo :: list()) -> ok.
  write_processes_info_to_node(Node, ProcessesInfo) ->
      FWrite = fun({Key, ProcessPid, ProcessMeta}) ->
          mnesia:dirty_write(#syn_registry_table{
              key = Key,
  
negative.code:     %% monitor mnesia events
      mnesia:subscribe(system),
      %% get options
      {ok, [RegistryConflictingProcessCallbackModule, RegistryConflictingProcessCallbackFunction]} = syn_utils:get_env_value(
          registry_conflicting_process_callback,
          [undefined, undefined]
      ),
      %% build state
      {ok, #state{
          registry_conflicting_process_callback_module = RegistryConflictingProcessCallbackModule,
          registry_conflicting_process_callback_function = RegistryConflictingProcessCallbackFunction
      }}.
  
  %% ----------------------------------------------------------------------------------------------------------
  