anchor.diff:  -include_lib("eunit/include/eunit.hrl").
   -endif. % TEST
   
  --define(SERVER_CMD_READ_TIMEOUT, 600*1000).
  -
   -export([start_link/1, stop/1,
            update_wedge_state/3, wedge_myself/2]).
   -export([make_listener_regname/1, make_projection_server_regname/1]).
   %% TODO: remove or replace in OTP way after gen_*'ified
  --export([current_state/1, format_state/1]).
  +-export([main2/4, run_append_server/2, run_listen_server/1,
  +         current_state/1, format_state/1]).
   
   -record(state, {
             flu_name        :: atom(),
  
positive.code:                 etstab=ets_table_name(FluName),
                  epoch_id=EpochId,
                  props=Props},
      AppendPid = start_append_server(S0, self()),
      receive
          append_server_ack -> ok
      end,
      if SendAppendPidToProj_p ->
              machi_projection_store:set_wedge_notify_pid(ProjectionPid,
                                                          AppendPid);
  
negative.code:             exit({?MODULE, run_listen_server, tcp_port, TcpPort, Else})
      end.
  
  run_append_server(FluPid, #state{flu_name=Name,
                                   wedged=Wedged_p,epoch_id=EpochId}=S) ->
      %% Reminder: Name is the "main" name of the FLU, i.e., no suffix
      register(Name, self()),
      TID = ets:new(ets_table_name(Name),
                    [set, protected, named_table, {read_concurrency, true}]),
      ets:insert(TID, {epoch, {Wedged_p, EpochId}}),
      proc_lib:init_ack({ok, self()}),
      append_server_loop(FluPid, S#state{etstab=TID}).
  
  listen_server_loop(LSock, S) ->
  