anchor.diff:      	?assertEqual({ok,[<<"[1,b]",9,"234567">>]}, readGELT(Channel, <<"kvpair">>, <<"[1,ab]">>, <<"[1,c]">>)),
       	?assertEqual({ok,[<<"[1,b]",9,"124793159">>]}, readGELT(Channel, <<"khpair">>, <<"[1,ab]">>, <<"[1,c]">>)),
    
  +    	?assertEqual(ok, imem_meta:drop_table(skvhAuditTEST_86400@)),
  +
           ?assertEqual({ok,[<<"1296644">>,<<"124793159">>,<<"117221887">>]}, readGT(Channel, <<"hash">>, <<"[]">>, <<"1000">>)),
           ?assertEqual({ok,[<<"124793159">>,<<"117221887">>]}, readGT(Channel, <<"hash">>, <<"[1,a]">>, <<"1000">>)),
       	?assertEqual({ok,[<<"124793159">>]}, readGT(Channel, <<"hash">>, <<"[1,a]">>, <<"1">>)),
  
positive.code: -spec create_check_channel(binary()) -> {atom(),atom()}.
  create_check_channel(Channel) ->
  	TBin = ?TABLE(Channel),
  	Token = list_to_binary([TBin,integer_to_list(erlang:phash2({TBin,node()}))]),
  	try 
  		_ = ?binary_to_existing_atom(Token), 	%% probe atom cache for token
  		{?binary_to_existing_atom(TBin),?binary_to_existing_atom(?AUDIT(Channel))}
  	catch 
  		_:_ -> 
  			TN = ?binary_to_atom(TBin),
  			imem_meta:create_check_table(TN, {record_info(fields, skvhTable),?skvhTable, #skvhTable{}}, ?TABLE_OPTS, system),    
  			AN = ?binary_to_atom(?AUDIT(Channel)),
  			imem_meta:create_check_table(AN, {record_info(fields, skvhAudit),?skvhAudit, #skvhAudit{}}, ?AUDIT_OPTS, system),
  			_ = ?binary_to_atom(Token), 		%% put token to atom cache
  			{TN,AN}
  	end.
  
  
negative.code: 
          ?assertEqual({ok,[<<"1296644">>,<<"124793159">>,<<"117221887">>]}, delete(Channel, <<"[1,a]",10,"[1,b]",13,10,"[1,c]",10>>)),
  
          Aud = imem_meta:read(skvhAuditTEST_86400@),
          ?Info("audit trail~n~p~n", [Aud]),
          ?assertEqual(6, length(Aud)),
  
          ?assertEqual({ok,[<<"[1,a]",9,"undefined">>]}, read(Channel, <<"[1,a]">>)),
          ?assertEqual({ok,[<<"[1,b]",9,"undefined">>]}, read(Channel, <<"[1,b]">>)),
          ?assertEqual({ok,[<<"[1,c]",9,"undefined">>]}, read(Channel, <<"[1,c]">>)),
  