anchor.diff:  -spec lookup_first(Table, Number) -> Value
   	when
   		Table :: atom(),
  -		Number :: string() | integer(),
  +		Number :: string(),
   		Value :: term().
   %% @doc Lookup the value of the first matching table entry.
   %% 
  -lookup_first(Table, Number) when is_integer(Number) ->
  -	lookup_first(Table, integer_to_list(Number));
   lookup_first(Table, [Digit | Rest]) when is_atom(Table) ->
   	Fun1 = fun(F, [H|T], [#gtt{num = Prefix, value = undefined}]) ->
   				F(F, T, mnesia:read(Table, Prefix ++ [H], read));
  
positive.code: -spec delete(Table, Number) -> ok
  	when
  		Table :: atom(),
  	 	Number :: string() | integer().
  %% @doc Delete a table entry.
  %% 
  delete(Table, Number) when is_integer(Number) ->
  	delete(Table, integer_to_list(Number));
  delete(Table, Number) when is_atom(Table), is_list(Number) ->
  	Fun = fun() -> mnesia:delete(Table, Number, write) end,
  	case mnesia:transaction(Fun) of
  
negative.code: -spec lookup_last(Table, Number) -> Value
  	when
  		Table :: atom(),
  		Number :: string(),
  		Value :: term().
  %% @doc Lookup the value of the longest matching table entry.
  %% 
  lookup_last(Table, Number) when is_atom(Table) ->
  	Fun1 = fun(F, [_|T], []) ->
  				F(F, T, mnesia:read(Table, lists:reverse(T), read));
  