anchor.diff:  generic_find(Kind, Name, Commit, CommitObj, State, Default) ->
       case cache_find(Kind, Name, Commit, State) of
   	{value, Config} ->
  -	    {value, Config};
  +	    ?D_LOG("Config is ~p~n", [Config]),
  +	    {value, reconstitute_config(Config, State)};
   	 find_failed ->
  +	    ?D_LOG("calculating configs for Commit=~p~n", [Commit]),
   	    calc_configs(Commit, CommitObj, State),
  -	    cache_fetch(Kind, Name, Commit, State, Default)
  -    end.
  +	    {value, reconstitute_config(cache_fetch(Kind, Name, Commit, State, Default), State)}
  +    end.
  
positive.code: %%     interesting_install_edge(X).
  
  calc_configs(Commit, CommitObj, #cstate{re=RE, table=Cache, storage=StoreMod}=State) ->
      Tree = wallaroo_commit:get_tree(CommitObj, StoreMod),
      {Entities, Relationships} = wallaby_graph:extract_graph(Tree, StoreMod),
      Installs = digraph:new([private]),
      [digraph:add_vertex(Installs, Ent) || Ent <- Entities, interesting_install_vertex(Ent)],
      [digraph:add_edge(Installs, E1, E2, Kind) || F={Kind, E1, E2} <- Relationships, interesting_install_edge(F)],
      Order = lists:reverse(digraph_utils:topsort(Installs)),
      [calc_one_config(Entity, Tree, Commit, State) || Entity <- Order].
  
  path_for_kind(feature) ->
      <<"features">>;
  
negative.code:   when Kind =:= 'node' ->
      %% get node object from tree
      {value, EntityObj} = wallaroo_tree:get_path([path_for_kind(Kind), Name], Tree, StoreMod),
      Config = {wallaby_lw_config, Commit, wallaby_node:all_memberships(EntityObj)},
      cache_store(Kind, Name, Commit, Config, State).
      
  reconstitute_config({wallaby_lw_config, Commit, Memberships}, State) ->
      lists:foldl(apply_factory(false, State), [], [cache_fetch(group, Membership, Commit, State) || Membership <- lists:reverse(Memberships)]);
  reconstitute_config(Val, _) ->
      Val.
  
  join_factory(Bin) when is_binary(Bin) ->
      fun(Old, New) ->
  