anchor.diff:                  ets:insert(domain_table, {DomainID, Server})
           end,
           gen_server:cast(Server, Msg).
  +
  +domain_lookup(DomainID) ->
  +        case ets:lookup(domain_table, DomainID) of
  +                [] -> {false, none};
  +                [{_, Pid}] -> {is_process_alive(Pid), Pid}
  +        end.
   
   kill_domains() ->
           [gen_server:cast(S, {kill_domain, "ring changes"}) || 
  
positive.code: 
  domain_dispatch(Home, DomainID, IsOwner, Msg) ->
          error_logger:info_report({"Dispatch", DomainID, IsOwner, Msg}),
          {Alive, S} = case ets:lookup(domain_table, DomainID) of
                  [] -> {false, none};
                  [{_, S0}] -> {is_process_alive(S0), S0}
          end,
          if Alive -> 
                  Server = S;
          true ->
  
negative.code:         end.
  
  
  get_domainlist(Home, From) -> 
          {ok, Files} = file:list_dir(Home),
          PDomains = lists:map(fun
                  ([$r, $d, $o, $m, $a, $i, $n, $-|DomainS]) ->
                          DomainID = (catch list_to_integer(DomainS)),
                          {Alive, _} = domain_lookup(DomainID),
                          {DomainID, Alive};
                  (_) -> none
          end, Files),
          gen_server:reply(From, {ok, [X || X <- PDomains, X =/= none]}).
  
  get_infopack(InfoFile, From) ->
          Ret = case catch file:script(InfoFile) of
                  {ok, _} = R -> R;
                  Error -> {error, Error}
          end,
          gen_server:reply(From, Ret).
  
  %%% callback stubs
  
  terminate(_Reason, _State) -> {}.
  