anchor.diff:  handle_cast({From, text, Message}, State) ->
       %%TBD, use lists:foldr for deploy message is not effective, we should think about another way.
       Clients = State#state.clients,
  -    Fun = fun(Client, AccIn) ->
  +    DeployFun = fun({Client, _ClientInfo}, AccIn) ->
           case is_process_alive(Client) of
               true ->
                   Client ! {From, text, Message},
  -                [Client | AccIn];
  +                AccIn;
               false ->
                   %%TBD, here should inform manager client ws is dead
  -                AccIn
  +                ets:delete(Clients, Client),
  +                [Client|AccIn]
           end
       end,
   
  -    {_DeployMsgResult, NewClients} = try
  -        NewClients_ = lists:foldr(Fun, [], Clients),
  -        {{ok, <<"Message successfully deployed!">>}, NewClients_}
  +    {_DeployMsgResult, NewState} = try
  +        %%TBD, here change sync to asyn simply by spawn, consider it again.
  +        %_DeadClients = ets:foldr(DeployFun, [], Clients),
  +        spawn(ets, foldr, [DeployFun, [], Clients]),
  +        {{ok, <<"Message successfully deployed!">>}, State}
       catch _:_ ->
  -        {{error, <<"Error occured when deploy message!">>}, Clients}
  +        {{error, <<"Error occured when deploy message!">>}, State}
       end,
  -	{noreply, State#state{clients = NewClients}};
  +	{noreply, NewState};
   
   handle_cast(_Msg, State) ->
   	{noreply, State}.
  
positive.code: 
  code_change(_OldVsn, State, _Extra) ->
  	{ok, State}.
  
negative.code: -record(state, {
      clients
  }).
  -record(client_info, {
      pid
  }).
  
  -include("lager.hrl").
  
  %% API.
  
  