/// <summary>
        /// Loads this board configuration into the model.
        /// Throws ArgumentException if the board configuration is not valid.
        /// Does nothing if the model is null.
        /// </summary>
        /// <param name="fen"></param>
        public void LoadBoardConfiguration(string fen)
        {
            if (model == null) { return; }

            // build the event args
            CancelEventArgs emptyArgs = new CancelEventArgs();

            // raise the Loading event on the model
            model.OnLoading(emptyArgs);

            // if the operation was cancelled
            if (emptyArgs.Cancel) { return; }

            // set the board
            try
            {
                model.CurrentBoard = Utils.GetFENBoard(fen);
            }
            catch
            {
                throw;
            }
            finally
            {
                // raise the BoardConfigurationLoaded event on the model
                model.OnBoardConfigurationLoaded(EventArgs.Empty);
            }
        }