private async void Model_StateChanged(object sender, StateChangedEventArgs e)
        {
            if (_playerSide != e.GameState.GameInformation.NextToMove)
            {
                // if we just moved, we're responsible for persisting the move to the data store.
                await _dataService.StoreTurnRecordAsync(
                    e.GameState.GameInformation.GameDataStore.GameID,
                    SerializationHelper.SerializeTurnRecord(e.TurnRecord));

                if (IsCheckMate())
                {
                    // TODO: stalemate
                    _board.IsEnabled = false;
                    _board.RevealAllPositions();
                    await _dataService.CompleteGameAsync(_model.GameInformation.GameDataStore.GameID);
                }
            }
        }