anchor.diff:      {ok, prepare, State, 0}.
   
   %% @doc Prepare request by retrieving the preflist.
  -prepare(timeout, #state{id=Id}=State) ->
  -    Preflist = lasp:preflist(?N, Id, lasp),
  -    Preflist2 = [{Index, Node} || {{Index, Node}, _Type} <- Preflist],
  +prepare(timeout, #state{id=Id, preflist=Preflist0}=State) ->
  +    Preflist2 = case Preflist0 of
  +        undefined ->
  +            Preflist = lasp:preflist(?N, Id, lasp),
  +            [{Index, Node} || {{Index, Node}, _Type} <- Preflist];
  +        _ ->
  +            Preflist0
  +    end,
       {next_state, execute, State#state{preflist=Preflist2}, 0}.
   
   %% @doc Execute the request.
  
positive.code: %%% API
  %%%===================================================================
  
  start_link(ReqId, From, Id, Type) ->
      gen_fsm:start_link(?MODULE, [ReqId, From, Id, Type], []).
  
  %% @doc Declare a variable.
  declare(Id, Type) ->
      ReqId = lasp:mk_reqid(),
      _ = lasp_declare_fsm_sup:start_child([ReqId, self(), Id, Type]),
      {ok, ReqId}.
  
  %%%===================================================================
  
negative.code: %%%===================================================================
  
  %% @doc Initialize the request.
  init([ReqId, From, Preflist, Id, Type]) ->
      State = #state{preflist=Preflist,
                     req_id=ReqId,
                     coordinator=node(),
                     from=From,
  