anchor.diff:          none -> 
               {reply, [], State}
       end;
  -
  +handle_call(drop, _From, State=#state{time_tree=TT}) ->
  +    [timer:cancel(E#entry.tref) || {_, E} <- gb_trees:to_list(TT)],
  +    {reply, ok, State#state{obj_tree=gb_trees:empty(), 
  +                            time_tree=gb_trees:empty(),
  +                            used_memory=0}};
  +handle_call(is_empty, _From, State) ->
  +    {reply, AllKeys, State} = handle_call(list, _From, State),
  +    case AllKeys of
  +        [] ->
  +            {reply, true, State};
  +        _ ->
  +            {reply, false, State}
  +    end;
  +handle_call({fold, Fun0, Acc}, _From, State) ->
  +    {reply, Keys, _} = handle_call(list, _From, State),
  +    Reply = do_fold(State, Keys, Fun0, Acc),
  +    {reply, Reply, State};
   handle_call(stop, _From, State) -> 
       {reply, ok, State}.
   
  
positive.code: 
  delete(State, BKey) -> 
      gen_server:call(State, {delete, BKey}).
  
  stop(State) -> 
      gen_server:call(State, stop).
  
negative.code: %% Private Functions
  %%
  
  do_fold(State=#state{obj_tree=_OT}, Keys, Fun0, Acc) ->
      Objs = [element(2, obj_find(B, K, State)) || {B,K} <- Keys],
      Fun = fun(E, AccIn) ->
                    Fun0({E#entry.bucket, E#entry.key}, E#entry.value, AccIn)
            end,
      lists:foldl(Fun, Acc, Objs).
      
  % Lookup the #entry record specified by Bucket/Key.    
  % Returns {value, Entry} or none.
  obj_find(Bucket, Key, State) -> 
  