anchor.diff:           ]).
   
   substitute(Bin) ->
  -  Vars = get(),
  -  substitute(Bin, Vars).
  -
  -substitute(Bin, [])         -> Bin;
  -substitute(Bin, [{K, V}|T]) -> substitute(substitute(Bin, K, V), T).
  -
  -substitute(Bin, K0, V) ->
  -  ?VAR_PREFIX ++ K1 = to_list(K0),
  -  K = ?RECALL_BEGIN_TAG ++ K1 ++ ?RECALL_END_TAG,
  -  re:replace(Bin, K, to_list(V), [{return, binary}, global]).
  +  FirstKey = ets:first(?MODULE),
  +  substitute(Bin, FirstKey).
  +
  +substitute(Bin, '$end_of_table') -> Bin;
  +substitute(Bin0, K0) ->
  +  V = ets:lookup(?MODULE, K0),
  +  K = ?RECALL_BEGIN_TAG ++ K0 ++ ?RECALL_END_TAG,
  +  Bin = re:replace(Bin0, K, to_list(V), [{return, binary}, global]),
  +  substitute(Bin, ets:next(?MODULE, K0)).
   
   %%%_* Validation -------------------------------------------------------
   validate(E = #katt_response{}, A = #katt_response{}) ->
  
positive.code: 
  %%%_* Internal =========================================================
  run_scenario(Scenario, Blueprint, Params, Vars) ->
    [put_var(Key, Value) || {Key, Value} <- Vars],
    run_operations( Scenario
                , Blueprint#katt_blueprint.operations
                , Params
                , []
                ).
  
  run_operations( Scenario
                , [#katt_operation{ description=Description
  
negative.code:   pass;
  do_validate(_Key, ?STORE_BEGIN_TAG ++ Rest, A)         ->
    Key = string:sub_string(Rest, 1, string:str(Rest, ?STORE_END_TAG) - 1),
    ets:insert(?MODULE, {Key, A}),
    pass;
  do_validate(Key, E, A)                                 ->
    compare(Key, E, A).
  
  %% put_var(Key, Value) -> put(?VAR_PREFIX ++ Key, Value).
  %% get_var(Key) -> get(?VAR_PREFIX ++ Key).
  
  compare(_Key, E, E) -> pass;
  