anchor.diff:  
   -define(NETWORK_NAME, "all_data_tf_500").
   -define(NETWORK_LAYERS, [42,128,256,72,1]).
  +%-define(NETWORK_LAYERS, [42,128,512,108,1]).
   
   -record(state, {
       id :: list(),
  
positive.code: 
  code_change(_OldVsn, State, _Extra) -> {ok, State}.
  
  
negative.code:     {reply, train(Id, NN, Batches, BatchSize, Epochs, FromKey, 0), State}.
  
  %% This game id is not the same as our internal game ids, maybe we should change name...
  handle_cast({play_bot_req, GameId, BoardBin, [Alias | Others]}, #state{network = NN} = State) ->
      Options = put_options(BoardBin),
      case play_bot_immediate_win(BoardBin, Alias, Options) of
          {ok, Idx, NewBoard} ->
              play_bot_resp(GameId, Alias, {ok, Idx, NewBoard});
          {nok, no_immediate_win} ->
              case play_bot_defend_immediate(BoardBin, Alias, hd(Others), Options) of
                  {ok, Idx, NewBoard} ->
                      play_bot_resp(GameId, Alias, {ok, Idx, NewBoard});
                  {nok, no_immediate_risk} ->
                      Board = transform_board(BoardBin, Alias),
                      {_Sugested, Best} = suggest_moves_impl(Board, NN),
                      %% For some reason we need to give back the new board ...
                      play_bot_resp(GameId, Alias, egambo_tictac:put(true, BoardBin, 7, Best, Alias))
              end
      end,
      {noreply, State};
  handle_cast(Request, State) -> 
      ?Info("Unsolicited handle_cast in ~p : ~p", [?MODULE, Request]),
  