anchor.diff:      ).
   
   % define when a command is valid
  +precondition(_S,{call,?DRIVER,append,[_StreamName, _Data]}) ->
  +    true;
   precondition(S,{call,?DRIVER,_Query,[StreamName|_OtherArgs]}) ->
       case lists:keysearch(StreamName,1,S#state.streams) of
           {value, {StreamName,Data}} ->
  
positive.code: command(S) ->
      frequency(
          [
              {9,{call,?DRIVER,append,[elements(?STREAMNAMES),list(integer(65,122))]}},
              {1,symb_call(range_query, elements(?STREAMNAMES), S#state.starttime)},
              {1,symb_call(all_since, elements(?STREAMNAMES), S#state.starttime)},
              {1,symb_call(last_entry_at, elements(?STREAMNAMES), S#state.starttime)}
  
negative.code:             end;
          false ->
              true
      end.
  
  % define the state transitions triggered by each command
  next_state(S,_V,{call,?DRIVER,append,[StreamName,Data]}) ->
      case Data of
          [] ->
              S;
          _ ->
              case lists:keysearch(StreamName,1,S#state.streams) of
                  {value, {StreamName,OldData}} ->
                      NewTuple = {StreamName,[{timestamp(),Data}|OldData]},
                      S#state{
                          streams = lists:keyreplace(StreamName,1,S#state.streams,NewTuple)
                      };
                  false ->
                      NewTuple = {StreamName,[{timestamp(),Data}]},
                      S#state{streams = [NewTuple|S#state.streams]}
              end
      end;
  next_state(S,_V,{call,?DRIVER,_Query,[StreamName|_OtherArgs]}) ->
      case lists:keysearch(StreamName,1,S#state.streams) of
  