anchor.diff:      gen_server:start_link({local,?MODULE}, ?MODULE, [], []).
   
   read(Name, DataPoint) ->
  -    case ets:lookup(?TABLE, Name ++ [DataPoint]) of
  +    case ets:lookup(?TABLE, path(Name, DataPoint)) of
           [#cache{value = Val}] ->
               {ok, Val};
           _ ->
  
positive.code:     write(Name, Value, DataPoint, undefined).
  
  write(Name, DataPoint, Value, TTL) ->
      Path = Name ++ [ DataPoint],
      try OldTRef = ets:lookup_element(?TABLE, Path, #cache.tref),
           erlang:cancel_timer(OldTRef)
      catch error:_ -> ok
  
negative.code: 
  delete(Name, DataPoint) ->
      %% Cancel the timer?
      ets:delete(?TABLE, path(Name, DataPoint)).
  
  start_timer(Name, TTL, TS) ->
      gen_server:cast(?MODULE, {start_timer, Name, TTL, TS}).
  