anchor.diff:      {noreply, State}.
   
   handle_info({'DOWN', MRef, process, DownPid, _Reason}, State) ->
  -	ets:match_delete(emqtt_client, {{'_', DownPid, MRef}}),
  +	ets:match_delete(?TABLE, {{'_', DownPid, MRef}}),
       {noreply, State};
   
   handle_info(_Info, State) ->
  
positive.code: 		 handle_info/2,
           terminate/2,
  		 code_change/3]).
  
  %% ------------------------------------------------------------------
  %% API Function Definitions
  
negative.code: unregister(ClientId, Pid) when is_binary(ClientId), is_pid(Pid) ->
  	gen_server:cast(?SERVER, {unregister, ClientId, Pid}).
  
  getstats(?SERVER) ->
      gen_server:call(?SERVER, getstats).
  
  %% ------------------------------------------------------------------
  %% gen_server Function Definitions
  %% ------------------------------------------------------------------
  
  init([]) ->
  	%on one node
  	ets:new(?TABLE, [set, named_table, protected]),
      {ok, none}.
  
  handle_call({register, ClientId, Pid}, _From, State) ->
  	case ets:lookup(?TABLE, ClientId) of
          [{_, Pid, _}] ->
  			lager:error("clientId '~s' has been registered with ~p", [ClientId, Pid]),
              ignore;
  