anchor.diff:      {reply, {ok, Summary}, StateName, State};
   handle_sync_event(_Event, _From, StateName, State) ->
       {next_state, StateName, State}.
  -
   
   handle_info({'DOWN', _MRef, process, Pid, normal}, StateName,
               #state{workers = Workers, batches = Batches}=State) when Workers > 0 ->
  
positive.code:     log(info, "preloading nodes for ~B orgs", [Amt]),
      case preload_orgs(Amt, State) of
          {ok, State1} ->
              error_logger:info_msg("preloading complete~n"),
              log(info, "preloading complete"),
              {next_state, ready, State1};
          Error ->
              {stop, Error, State}
      end.
  
  %% find_migration_candidates
  %% mark_candidates_as_read_only
  %% 
  ready({start, NumBatches, OrgsPerBatch, NodeBatchSize}, _From,
        #state{workers = 0, batches = 0}=State) ->
      State1 = State#state{batches = NumBatches,
  
negative.code: start_batch(timeout, #state{workers = 0,
                              batches = Batches,
                              orgs_per_batch = NumOrgs,
                              node_batch_size = NodeBatchSize,
                              orgs_to_migrate = Candidates}=State) ->
      case safe_split(NumOrgs, Candidates) of
          {[], _} ->
              error_logger:info_msg("no migration candidates~n"),
              log(info, "no migration candidates"),
              {next_state, ready, State#state{batches = 0, orgs_to_migrate = []}};
          {Orgs, OrgsRest} ->
              %% Tell darklaunch to put these orgs into read-only
              %% mode for nodes.
              ok = darklaunch_disable_node_writes([ Name || {_, Name} <- Orgs ]),
  