anchor.diff:  	Cards ->
   	    lager:info("Save ~p~n", [Cards]),
   	    R = table_sup:save(TablePid, Cards),
  -	    {response(R, save), S}
  +	    {response(R, save), new_state(R, S)}
       end;
   handle(_, S) ->
       {{error, illegal_state}, S}.
  +
  +
  +new_state({ok}, {joined, TablePid, _, _}) ->
  +    {joined, TablePid, false, 0, empty};
  +new_state(_, S) ->
  +    S.
   
   get_tables(Pid) ->
       {ok, Tables} = admin:list_avail_tables(),
  
positive.code:     lager:info("WS handle ~p ~p ~n",[ Data, State]),
      {ok, Req, State}.
  
  websocket_info(Msg, Req, State) ->
      lager:info("WS info ~p ~n",[Msg]),
      {reply, {text, jsx:encode(transform(Msg))}, Req, State}.
  
  websocket_terminate(Reason, _Req, State) ->
          lager:info("WS TERMINATE ~p ~p~n",[Reason, State]),
  	ok.
  
  handle([<<"login">>, N], {} = S) ->
      Name = binary_to_list(N),
  
negative.code: 	Card ->
  	    lager:info("Playing ~p~n",[Card]),
  	    R = table_sup:play(TablePid, Card),
  	    {response(R, play), new_state(R, S)}
      end;
  handle([<<"save">>, Cds], {joined, TablePid, _, _, _} = S) ->
      Cs = (catch lists:map(fun decode_card/1, Cds)),
      case Cs of
  	{'EXIT', _} ->
  