anchor.diff:  jd(Term) ->
     jiffy:decode(Term).
   
  +%% key for inserts/deletes
  +ikey(L) ->
  +  list_to_tuple([ielem(E) || E <- L]).
  +
  +ielem("_") -> throw({404,key_has_underscore});
  +ielem(E)   -> l2b(E).
  +
  +%% key for lookups
  +lkey(L) ->
  +  list_to_tuple([lelem(E) || E <- L]).
  +
  +lelem("_") -> '_';
  +lelem(E)   -> l2b(E).
  +
   l2b(L) ->
     list_to_binary(L).
   
  +%% table names
   tab(L) ->
     T = list_to_existing_atom(L),
     case ets:info(T,size) of
  
positive.code:   [binary_to_list(K) || {K,<<"true">>} <- headers(Req)].
  
  ets({keys,Tab})       -> ets:foldr(fun({K,_},A)->[K|A]end,[],tab(Tab));
  ets({insert,Tab,K,V}) -> inserter(tab(Tab),{l2b(K),V});
  ets({insert,Tab,KVs}) -> ets:insert(tab(Tab),unpack(KVs));
  ets({counter,Tab,Key})-> update_counter(tab(Tab),l2b(Key));
  ets({reset,Tab,Key})  -> ets:insert(tab(Tab),{l2b(Key),0}),"0";
  ets({get,Tab,Key})    -> getter(tab(Tab),l2b(Key));
  ets({delete,Tab,Key}) -> ets:delete(tab(Tab),l2b(Key)).
  
  inserter(Tab,{K,V}) ->
    case ets:insert_new(Tab,{K,V}) of
  
negative.code:   end.
  
  getter(Tab,Key) ->
    case ets:select(Tab,[{{Key,'_'},[],['$_']}]) of
      [{_,Res}] ->
        case is_integer(Res) of
          true -> integer_to_list(Res);
          false-> Res
  