anchor.diff:  
   
   handle_call({new_router}, _From, State) ->
  -    {reply, ok, State};
  -    
  -    
  -handle_call({new_router, Name}, _From, State) ->
  -    {reply, ok, State};    
  +	Id = State#state.nextid,
  +	Node = State#state.nextnode,
  +	
  +	ets:insert(State#state.root_table, #router{ id = Id, rootnode = Node } ),
  +	ets:insert(State#state.node_table, #route_node{ key = Node, router = Id } ),
  +	
  +    {reply, Id, State#state{ nextid = Id + 1, nextnode = Node + 1 }};
  +    
  +    
  +handle_call({new_router, Name}, From, State)
  +		when is_atom(Name)  ->
  +	{reply, Id, NewState} = handle_call({new_router}, From, State),
  +	ets:insert(State#state.registry_table, #registry{ name = Name, router = Id } ),
  +	
  +    {reply, Id, NewState}; 
       
       
   handle_call({free_router, Router}, _From, State) ->
  +	Id = get_router(Router),
  +
  +	match_delete(State#state.root_table, #router{ id = Id, _ = '_' }),
  +	match_delete(State#state.node_table, #route_node{ router = Id, _ = '_' }),
  +	match_delete(State#state.registry_table, #registry{ router = Id, _ = '_' }),
  +	
       {reply, ok, State};
   
       
  
positive.code: %%%%% ------------------------------------------------------- %%%%%
  
  
  terminate(_Reason, _State) ->
      ok.
  
  code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
  
negative.code:                   
  
  -type nodeid() :: pos_integer().
  -type routerid() :: pos_integer().
  -type data() :: term().
  
  -type routername() :: atom() | routerid().
  
  -type path_fragment() :: string() | binary() | atom() | number().
  -type match_fragment() :: match_star | {match_star, atom()}
  