anchor.diff:  handle_cast({remaining_moves, M}, #state{moves=Moves, progress=Progress} =
                   State) ->
       P = [{Node, 1.0 - N / dict:fetch(Node, Moves)} || {Node, N} <- M],
  -    ?log_info("Remaining moves: ~p, progress: ~p", [M, P]),
       {noreply, State#state{progress=lists:ukeymerge(1, P, Progress)}};
   handle_cast({starting_moves, M}, State) ->
       {noreply, State#state{moves=dict:from_list(M)}}.
  
positive.code: 
  -define(REBALANCE_SUCCESSFUL, 1).
  -define(REBALANCE_FAILED, 2).
  
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2,
  
negative.code:         %% Push out the config with the new map in case this node is being removed
          ns_config_rep:push(),
          maybe_stop(),
          %% Leave myself last
          LeaveNodes = lists:delete(node(), EvacuateNodes),
          lists:foreach(fun (N) ->
                                ns_cluster_membership:deactivate([N]),
                                ns_cluster:leave(N)
                        end, LeaveNodes),
          case lists:member(node(), EvacuateNodes) of
              true ->
                  ns_cluster_membership:deactivate([node()]),
                  ns_cluster:leave();
              false ->
                  ok
  