anchor.diff:  
   -spec do_get_nodeinfo(state()) -> {ok, [nodeinfo()]}.
   do_get_nodeinfo(#state{nodes = Nodes}) ->
  -    Info = [#nodeinfo{name = N#dnode.host,
  -                      slots = N#dnode.slots,
  -                      num_running = N#dnode.num_running,
  -                      stats_ok = N#dnode.stats_ok,
  -                      stats_failed = N#dnode.stats_failed,
  -                      stats_crashed = N#dnode.stats_crashed,
  -                      connected = N#dnode.connection_status =:= up,
  -                      blacklisted = N#dnode.manual_blacklist}
  -            || N <- gb_trees:values(Nodes)],
  +    Info = [#nodeinfo{name = Host,
  +                      slots = Slots,
  +                      num_running = NumRunning,
  +                      stats_ok = StatsOk,
  +                      stats_failed = StatsFailed,
  +                      stats_crashed = StatsCrashed,
  +                      connected = ConnectionStatus =:= up,
  +                      blacklisted = Blacklisted}
  +            || #dnode{host = Host,
  +                      slots = Slots,
  +                      num_running = NumRunning,
  +                      stats_ok = StatsOk,
  +                      stats_failed = StatsFailed,
  +                      stats_crashed = StatsCrashed,
  +                      connection_status = ConnectionStatus,
  +                      manual_blacklist = Blacklisted} <- gb_trees:values(Nodes)],
       {ok, Info}.
   
   -spec do_get_purged(state()) -> {{ok, [binary()]}, state()}.
  
positive.code: -spec update_stats(host_name(), none | {value, dnode()}, _,
                     state()) -> state().
  update_stats(_Node, none, _ReplyType, S) -> S;
  update_stats(Node, {value, N}, ReplyType, S) ->
      M = N#dnode{num_running = N#dnode.num_running - 1},
      M0 = case ReplyType of
               done ->
                   M#dnode{stats_ok = M#dnode.stats_ok + 1};
               error ->
                   M#dnode{stats_failed = M#dnode.stats_failed + 1};
               fatal ->
                   M#dnode{stats_crashed = M#dnode.stats_crashed + 1};
               _ ->
                   M#dnode{stats_crashed = M#dnode.stats_crashed + 1}
           end,
      S#state{nodes = gb_trees:update(Node, M0, S#state.nodes)}.
  
  -spec do_connection_status(host_name(), up | down, state()) -> state().
  do_connection_status(Node, Status, #state{nodes = Nodes} = S) ->
  
negative.code: 
  -spec do_get_num_cores(state()) -> {ok, cores()}.
  do_get_num_cores(#state{nodes = Nodes}) ->
      {ok, lists:sum([Slots || #dnode{slots = Slots} <- gb_trees:values(Nodes)])}.
  
  -spec do_kill_job(jobname()) -> ok.
  do_kill_job(JobName) ->
  