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:             {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)},
  