anchor.diff:      %% get group object from tree
       {value, EntityObj} = wallaroo_tree:get_path([path_for_kind(Kind), Name], Tree, StoreMod),
       %% apply installed feature configs to empty config; these should already be in the cache
  -    BaseConfig = lists:foldl(apply_factory(true, State), [], [cache_find(feature, Installed, Commit, State) || Installed <- lists:reverse(wallaby_group:features(EntityObj))]),
  +    BaseConfig = lists:foldl(apply_factory(true, State), [], [cache_fetch(feature, Installed, Commit, State) || Installed <- lists:reverse(wallaby_group:features(EntityObj))]),
       %% apply my parameters to the base config
       cache_store(Kind, Name, Commit, apply_to(BaseConfig, wallaby_group:parameters(EntityObj), true, State), State); 
   calc_one_config({Kind, Name}, Tree, Commit, #cstate{re=RE, table=Cache, storage=StoreMod}=State) 
     when Kind =:= 'node' ->
       %% get node object from tree
       {value, EntityObj} = wallaroo_tree:get_path([path_for_kind(Kind), Name], Tree, StoreMod),
  -    Config = lists:foldl(apply_factory(false, State), [], [cache_find(group, Membership, Commit, State) || Membership <- lists:reverse(wallaby_node:all_memberships(EntityObj))]),
  +    Config = lists:foldl(apply_factory(false, State), [], [cache_fetch(group, Membership, Commit, State) || Membership <- lists:reverse(wallaby_node:all_memberships(EntityObj))]),
       cache_store(Kind, Name, Commit, Config, State).
       
       
  
positive.code:     Config.
  
  cache_find(Kind, Name, Commit, #cstate{table=Cache}) ->
      ok.
  
  generic_find(Kind, Name, Commit, #cstate{table=Cache}) ->
      case ets:match(Cache, {{Kind, Name, Commit}, '$1'}) of
  	[[Config]] ->
  	    Config;
  	 _ ->
  	    find_failed
      end.
  
negative.code:     %% get feature object from tree
      {value, EntityObj} = wallaroo_tree:get_path([path_for_kind(Kind), Name], Tree, StoreMod),
      %% apply included feature configs to empty config; these should already be in the cache
      BaseConfig = lists:foldl(apply_factory(true, State), [], [cache_fetch(Kind, Included, Commit, State) || Included <- lists:reverse(wallaby_feature:includes(EntityObj))]),
      %% resolve "defaulted" parameters
      MyConfig = orddict:map(fun(Param, 0) ->
  				   {value, PObj} = wallaroo_tree:get_path([path_for_kind(parameter), Param], Tree, StoreMod),
  