anchor.diff:      
   init([]) ->
       {ok, GroupsFile} = file:open(?GROUPSFILE, [read]),
  -    RGroups = replication_groups_from_file(GroupsFile, dict:new()),
  +    Name = list_to_atom(atom_to_list(node()) ++ atom_to_list(rgroups_saturn)),
  +    RGroups = ets:new(Name, [set, named_table]),
  +    ok = replication_groups_from_file(GroupsFile, RGroups),
       file:close(GroupsFile),
        
       {ok, TreeFile} = file:open(?TREEFILE, [read]),
  
positive.code:     Paths = path_from_tree_dict(Tree, Leaves),
      {reply, ok, S0#state{paths=Paths, tree=Tree, nleaves=Leaves}};
  
  handle_call({set_groupsdict, RGroups}, _From, S0) ->
      {reply, ok, S0#state{groups=RGroups}};
  
  handle_call({new_groupsfile, File}, _From, S0) ->
      {ok, GroupsFile} = file:open(File, [read]),
      RGroups = replication_groups_from_file(GroupsFile, dict:new()),
      file:close(GroupsFile),
      {reply, ok, S0#state{groups=RGroups}};
  
  handle_call({new_treefile, File}, _From, _S0) ->
      {ok, TreeFile} = file:open(File, [read]),
  
negative.code:                     {reply, {error, no_replica_found}, S0};
                  _ ->
                      {reply, {ok, ClosestId}, S0}
              end
      end;
  
  
  handle_call({get_datanodes_ids, BKey}, _From, S0=#state{groups=Groups, myid=MyId}) ->
      {Bucket, _Key} = BKey,
      case ets:lookup(Groups, Bucket) of
          [] ->
              {reply, {error, unknown_key}, S0};
          [{Bucket, Value}] ->
              Group = lists:foldl(fun(Id, Acc) ->
                                      case Id of
                                          MyId ->
  