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