anchor.diff:  handle(_, S) ->
       {{error, illegal_state}, S}.
   
  -new_state({ok}, {joined, TablePid, _, _}) ->
  +new_state({ok}, {joined, TablePid, _, _, _}) ->
       {joined, TablePid, false, 0, empty};
   new_state(_, S) ->
       S.
  
positive.code:     lager:info("WS handle ~p ~p ~n",[ Data, State]),
      {ok, Req, State}.
  
  websocket_info({timer, Msg, Ref}, Req, {joined, Pid, true, N, Ref}) ->
      lager:info("WS timer ~p ~p ~n",[Msg, N]),
      timer:send_after(?PROMPT_REPEAT, {timer, Msg, Ref}),
      {reply, {text, jsx:encode(transform(Msg))}, Req, {joined, Pid, true, N + 1, Ref}};
  websocket_info({timer, _, _}, Req, S) ->
      {ok, Req, S};
  websocket_info({table_closed, _ , _} = Msg, Req, _State) ->
  
negative.code: -module(zole_ws_handler).
  -define(PROMPT_REPEAT, 10000).
  -define(CONN_TIMEOUT, 200000).
  -define(PROMPT_TIMEOUT, 6).
  -import(lists,[delete/2,nth/2,split/2,sort/2,map/2,nth/2,zip/2,member/2,reverse/1,foreach/2,all/2]).
  -import(maps,[get/2,put/3,from_list/1,to_list/1,is_key/2,keys/1,get/3,update/3]).
  
  