anchor.diff:  state() ->
     gen_server:call(?MODULE,state).
   
  -lookup(Name) when is_binary(Name) ->
  +lookup(Name) ->
  +  lookup(Name,'_').
  +
  +lookup(Name,CC) when is_binary(Name), is_atom(CC) ->
     try
       Tab = tablename(),
  -    IDs = ets:match(Tab,{{Name,'$1'}}),
  +    IDs = ets:match(Tab,{{Name,CC,'$1'}}),
       [ets:lookup(Tab,ID) || [ID] <- IDs]
     catch
       _:R -> {error,R}
     end;
  -lookup(Name) ->
  -  lookup(list_to_binary(Name)).
  +lookup(Name,CC) when not is_binary(Name) ->
  +  lookup(list_to_binary(Name),CC);
  +lookup(Name,CC) when not is_atom(CC) ->
  +  lookup(Name,list_to_atom(CC)).
   
   %% for application supervisor
   start_link() ->
  
positive.code: 
  handle_line(Tab,Data) ->
    try
      [BID,RealName,LatinName,BNames,BLat,BLong,<<"P">>|_] = re:split(Data,"\t"),
      ID = list_to_integer(binary_to_list(BID)),
      Lat = bin_to_float(BLat),
      Long = bin_to_float(BLong),
      ets:insert(Tab,{ID,RealName,Lat,Long}),
      insert_names(Tab,ID,[RealName,LatinName|split_comma(BNames)])
    catch
      _:_ -> ok
    end.
  
negative.code: bin_to_float(B) ->
    case re:run(B,"\\.") of
      nomatch -> float(list_to_integer(binary_to_list(B)));
      _       -> list_to_float(binary_to_list(B))
    end.
  
  split_comma(B) ->
  