anchor.diff:      gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
   
   init_tables() ->
  +	ets:new(?MODULE, [
  +		set,
  +		public,
  +		named_table
  +	]),
   	ets:new(hot_proxy_config_lookup, [
   		bag,
   		public,
  
positive.code: -export([
  	init_tables/0,
  	get_domain_servers/1,
  	insert_domain/3
  ]).
  
  
negative.code: 
  get_domain_servers(Domain) ->
  	{ok, {Domain, [
  		RoutingData || {_Domain, _RoutingGroup, RoutingData} <- ets:lookup(hot_proxy_config_lookup, Domain)
  	]}}.
  
  insert_domain(Domain, Aliases, HostAddrs) when is_list(Aliases), is_list(HostAddrs) ->
  	HostSpecs = [ {{{IP, Port}, TTL}, Weight} || {IP, Port, TTL, Weight} <- HostAddrs],
  	Primary   = [ {Domain, Domain, Spec} || Spec <- HostSpecs],
  	Secondary = [ {<< Alias/bits, $., Domain/bits >>, Domain, Spec} || Spec <- HostSpecs, Alias <- Aliases],
  	true = ets:insert(?MODULE, {Domain, Aliases, HostAddrs}),
  	true = ets:insert(hot_proxy_config_lookup, Primary ++ Secondary),
  	ok.
  
  insert_host(Domain, {IP, Port, TTL, Weight}) ->
  	Spec = {{{IP, Port}, TTL}, Weight},
  	[{Domain, Aliases, HostAddrs}] = ets:lookup(?MODULE, Domain),
  	Secondary = [ {<< Alias/bits, $., Domain/bits >>, Domain, Spec} || Alias <- Aliases],
  	true = ets:insert(?MODULE, {Domain, Aliases, [Spec |HostAddrs]}),
  	true = ets:insert(hot_proxy_config_lookup, [{Domain, Domain, Spec} |Secondary]),
  	ok.
  
  %% ------------------------------------------------------------------
  %% gen_server Function Definitions
  