anchor.diff:      io:format("client(~s/~s) unsubscribe ~p~n", [ClientId, Username, TopicTable]),
       {ok, TopicTable}.
   
  +on_session_created(ClientId, Username, _Env) ->
  +    io:format("session(~s/~s) created.", [ClientId, Username]).
  +
   on_session_subscribed(ClientId, Username, {Topic, Opts}, _Env) ->
       io:format("session(~s/~s) subscribed: ~p~n", [Username, ClientId, {Topic, Opts}]),
       {ok, {Topic, Opts}}.
  
positive.code: on_session_unsubscribed(ClientId, Username, {Topic, Opts}, _Env) ->
      io:format("session(~s/~s) unsubscribed: ~p~n", [Username, ClientId, {Topic, Opts}]),
      ok.
  
  %% transform message and return
  on_message_publish(Message = #mqtt_message{topic = <<"$SYS/", _/binary>>}, _Env) ->
  
negative.code: 
  -export([on_client_subscribe/4, on_client_unsubscribe/4]).
  
  -export([on_session_created/3, on_session_subscribed/4, on_session_unsubscribed/4, on_session_terminated/4]).
  
  -export([on_message_publish/2, on_message_delivered/4, on_message_acked/4]).
  
  