anchor.diff:              NewTuple = {StreamName,[{timestamp(),Data}]},
               S#state{streams = [NewTuple|S#state.streams]}
       end;
  -next_state(S,_V,{call,?DRIVER,range_query,[StreamName,_Start,_End]}) ->
  -    case lists:keysearch(StreamName,1,S#state.streams) of
  -        {value, {StreamName,_Data}} ->
  -            S;
  -        false ->
  -            S#state{streams = [{StreamName,[]}|S#state.streams]}
  -    end;
  -next_state(S,_V,{call,?DRIVER,all_since,[StreamName,_TS]}) ->
  -    case lists:keysearch(StreamName,1,S#state.streams) of
  -        {value, {StreamName,_Data}} ->
  -            S;
  -        false ->
  -            S#state{streams = [{StreamName,[]}|S#state.streams]}
  -    end;
  -next_state(S,_V,{call,?DRIVER,last_entry_at,[StreamName,_TS]}) ->
  +next_state(S,_V,{call,?DRIVER,_Query,[StreamName|_OtherArgs]}) ->
       case lists:keysearch(StreamName,1,S#state.streams) of
           {value, {StreamName,_Data}} ->
               S;
  
positive.code: 
  % define the commands to test
  command(S) ->
      oneof([
          symb_call(append, elements(?STREAMNAMES), null),
  %        symb_call(range_query, elements(?STREAMNAMES), S#state.starttime),
          symb_call(all_since, elements(?STREAMNAMES), S#state.starttime)%,
  %        symb_call(last_entry_at, elements(?STREAMNAMES), S#state.starttime)
      ]).
  
  % define when a command is valid
  precondition(S,{call,?DRIVER,last_entry_at,[StreamName,TS]}) ->
      case lists:keysearch(StreamName,1,S#state.streams) of
          {value, {StreamName,Data}} ->
              case Data of
                  [] ->
                      false;
                  _ ->
                      TimeStamps = [X || {X,_} <- Data],
                      TS > lists:min(TimeStamps)
              end;
          false ->
              false
      end;
  precondition(_S, _Command) ->
      true.
  
negative.code: sum(A,B) ->
      A+B.
  
  % Returns the current timestamp
  timestamp() ->
      {Mega, Sec, Micro} = now(),
  