public async Task MakeMove(RemoteGameInfo remoteInfo, Move move)
        {
            KgsGameInfo kgsInfo = (KgsGameInfo)remoteInfo;

            if (move.Kind == MoveKind.Pass)
            {
                await kgsConnection.MakeUnattendedRequestAsync("GAME_MOVE", new
                {
                    ChannelId = kgsInfo.ChannelId,
                    Loc       = "PASS"
                });
            }
            else
            {
                await kgsConnection.MakeUnattendedRequestAsync("GAME_MOVE", new
                {
                    ChannelId = kgsInfo.ChannelId,
                    Loc       = new
                    {
                        X = move.Coordinates.X,
                        Y = KgsCoordinates.OurToTheirs(move.Coordinates.Y, kgsInfo.BoardSize)
                    }
                });
            }
        }
 public async Task LifeDeathMarkLife(Position position, RemoteGameInfo remoteInfo)
 {
     KgsGameInfo kgsInfo = (KgsGameInfo)remoteInfo;
     await kgsConnection.MakeUnattendedRequestAsync("GAME_MARK_LIFE", new
     {
         ChannelId = kgsInfo.ChannelId,
         Alive     = true,
         X         = position.X,
         Y         = KgsCoordinates.OurToTheirs(position.Y, kgsInfo.BoardSize)
     });
 }