anchor.diff:      {reply, {ok, Edges}, State};
   
   handle_call({add_vertices, Vs}, _From, #state{dag=Dag}=State) ->
  -    [digraph:add_vertex(Dag, V) || V <- Vs],
  +    [digraph:add_vertex(Dag, V, 0) || V <- Vs],
       {reply, ok, State};
   
   handle_call(to_dot, _From, #state{dag=Dag}=State) ->
  
positive.code:     %% (where {Id, Read} = ReadFuns s.t. Id = V)
      Status = lists:map(fun(V) ->
          Read = lists:nth(1, [ReadF || {Id, ReadF} <- ReadFuns, Id =:= V]),
          digraph:add_edge(Dag, V, Dst, #edge_label{pid=Pid,
                                                    read=Read,
                                                    transform=TransFun,
                                                    write=WriteFun})
      end, Src),
  
      {R, St} = case lists:any(fun is_graph_error/1, Status) of
  
negative.code: 
  v_str(V) when is_pid(V)->
      pid_to_list(V).
  
  depth(G, V, Max) ->
      case digraph:in_neighbours(G, V) of
          [] ->
              lager:info("Node ~p has no neighbors.", [V]),
              Max;
          Neighbors ->
              lager:info("Node ~p has ~p neighbors.", [V, length(Neighbors)]),
              lists:foldl(fun(V1, MaxAcc) ->
                                  max(MaxAcc, depth(G, V1, Max + 1))
                          end, 0, Neighbors)
      end.
  