anchor.diff:              State5 = set_timer(?ENSEMBLE_TICK, tick, State4),
               {next_state, leading, State5};
           {failed, State4} ->
  -            step_down(State4),
  -            probe(init, set_leader(undefined, State4));
  +            step_down(State4);
           {shutdown, State4} ->
               %% io:format("Shutting down...~n"),
  -            step_down(State4),
               spawn(fun() ->
                             riak_ensemble_peer_sup:stop_peer(Ensemble, Id)
                     end),
               timer:sleep(1000),
  -            {stop, normal, State4}
  +            step_down(stop, State4)
       end;
   leading({forward, From, Msg}, State) ->
       case leading(Msg, From, State) of
  
positive.code:             {reply, ok, leading, State2};
          {failed, State2} ->
              send_reply(From, timeout),
              step_down(State),
              probe(init, set_leader(undefined, State2))
      end;
  leading(Msg, From, State) ->
      case leading_kv(Msg, From, State) of
  
negative.code:     State2#state{ready=true,
                   members=compute_members(Views)}.
  
  step_down(State) ->
      step_down(probe, State).
  
  step_down(Next, State) ->
      ?OUT("~p: stepping down~n", [State#state.id]),
      State2 = cancel_timer(State),
      reset_workers(State),
      State3 = set_leader(undefined, State2),
      case Next of
          probe ->
              probe(init, State3);
          prepare ->
              prepare(init, State3);
          stop ->
              {stop, normal, State3}
      end.
  
  abandon(State) ->
      Abandoned = {epoch(State), seq(State)},
  