anchor.diff:  -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
            code_change/3, terminate/2]).
   -export([get_datanodes/1,
  -         get_metadatanodes/2,
  +         get_hostport/1,
            new_node/2,
            set_myid/1,
            filter_stream_leaf/1,
            new_treefile/1,
            new_groupsfile/1,
            set_treedict/2,
  +         interested/2,
            set_groupsdict/1,
            do_replicate/1]).
   
  
positive.code: get_datanodes(Key) ->
      gen_server:call(?MODULE, {get_datanodes, Key}, infinity).
  
  get_metadatanodes(Key, Id) ->
      gen_server:call(?MODULE, {get_metadatanodes, Key, Id}, infinity).
  
  new_node(Id, HostPort) ->
      gen_server:call(?MODULE, {new_node, Id, HostPort}, infinity).
  
negative.code:                             end
                            end, [], Stream0),
      IndexNode = case dict:find(Internal, Map) of
                      {ok, {Host, Port}} -> {Host, Port};
                      error ->
                          lager:error("The id: ~p is not in the map ~p",[Internal, dict:fetch_keys(Map)]),
                          no_indexnode
                  end,
      {reply, {ok, Stream1, IndexNode}, S0};
  
  handle_call({interested, Id, Key}, _From, S0=#state{myid=MyId}) ->
      {reply, {ok, interested(Id, Key, MyId, S0)}, S0};
  
  handle_call({get_hostport, Id}, _From, S0=#state{map=Map}) ->
      case dict:find(Id, Map) of
          {ok, {Host, Port}} ->
              {reply, {ok, {Host, Port}}, S0};
          error ->
              {reply, {error, no_host}, S0}
      end.
  
  handle_cast(_Info, State) ->
  