anchor.diff:  
   handle_line(Tab,Data) ->
     try
  -    [BID,RealName,LatinName,BNames,BLat,BLong,<<"P">>|_] = re:split(Data,"\t"),
  +    SD = re:split(Data,"\t"),
  +    [BID,RealName,LatinName,BNames,BLat,BLong,<<"P">>,_,CC|_] = SD,
       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)])
  +    CCA = binary_to_atom(CC,latin1),
  +    ets:insert(Tab,{ID,RealName,CC,Lat,Long}),
  +    insert_names(Tab,ID,CCA,[RealName,LatinName|split_comma(BNames)])
     catch
       _:_ -> ok
     end.
  
positive.code:     Ns     -> Ns
    end.
  
  insert_names(Tab,ID,Names) ->
    [ets:insert(Tab,{{Name,ID}}) || Name <- Names].
  
negative.code: state() ->
    gen_server:call(?MODULE,state).
  
  lookup(Name) ->
    lookup(Name,'_').
  
  lookup(Name,CC) when is_binary(Name), is_atom(CC) ->
    try
      Tab = tablename(),
      IDs = ets:match(Tab,{{Name,CC,'$1'}}),
      [ets:lookup(Tab,ID) || [ID] <- IDs]
    catch
      _:R -> {error,R}
    end;
  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() ->
  