anchor.diff:    ]};
   
   rates(nodes) ->
  -  lists:map(fun(Node) -> rates(Node) end, membership:nodes());
  +  {array, lists:map(fun(Node) -> rates(Node) end, membership:nodes())};
   
   rates(Node) ->
  -  {obj, [
  +  {struct, [
       {name, Node},
       {get_rate, stats_server:rate(Node, get_rate, 1)},
       {put_rate, stats_server:rate(Node, put_rate, 1)},
  
positive.code:   
  syncs_running(cluster) ->
    {Good,_} = rpc:multicall(sync_manager, running, []),
    lists:map(fun({Part, NodeA, NodeB}) -> 
        {obj, [{partition, Part}, {nodes, [NodeA, NodeB]}]}
      end, lists:flatten(Good));
    
  syncs_running(Node) ->
    lists:map(fun({Part, NodeA, NodeB}) -> 
        {obj, [{partition, Part}, {nodes, [NodeA, NodeB]}]}
      end, sync_manager:running(Node)).
  
  diff_size(cluster) ->
    {Good,_} = rpc:multicall(sync_manager, diffs, []),
    {obj,
        lists:map(fun({Part, Diffs}) ->
            {integer_to_list(Part), {obj, Diffs}}
          end, lists:flatten(Good))
      }.
  
  
negative.code: %%--------------------------------------------------------------------
  
  info(stats) ->
    {struct, [
      {node,node()}, 
      {running_nodes,{array, lists:sort(nodes([this,visible]))}},
      {member_nodes,transform_partitions(lists:keysort(1, membership:partitions()))}
    ]};
    
  info(partitions) ->
    {array, lists:map(fun({Node, Part}) -> 
        {struct, [{node,Node},{partition,Part}]}
      end, lists:keysort(2, membership:partitions()))};
      
  info(nodes) ->
    {array, membership:nodes()}.
  
  rates(cluster) ->
    {struct, [
      {get_rate, lists:foldl(fun(Node, Acc) -> Acc + stats_server:rate(Node, get_rate, 1) end, 0, nodes([this,visible]))},
      {put_rate, lists:foldl(fun(Node, Acc) -> Acc + stats_server:rate(Node, put_rate, 1) end, 0, nodes([this,visible]))},
      {in_rate, lists:foldl(fun(Node, Acc) -> Acc + stats_server:rate(Node, in_rate, 1) end, 0, nodes([this,visible]))},
  