public virtual MoveResult Move(IPlayer player, IRef referee)
        {
            string piecePos = player.getMove("Enter piece to move: ");

            if (!referee.isValidPickUp(piecePos, player, this))
            {
                return(MoveResult.InvalidPickUp);
            }
            string placePos = player.getMove($@"Place {piecePos} at position: ");

            if (!referee.isValidPutDown(piecePos, placePos, player, this))
            {
                return(MoveResult.InvalidPutDown);
            }
            board[piecePos].changeState(Player.None);
            board[placePos].changeState(player.playerID);
            if (isInMill(placePos))
            {
                return(MoveResult.MillMade);
            }
            return(MoveResult.Done);
        }