public Deck getDeck(boolean useHiragana, boolean useKatakana, boolean useDakuten, boolean useYouon)
    {
        Deck allHiraToSound = new Deck();
        Deck allKataToSound = new Deck();
        Deck allHiraToKata = new Deck();
        
        // Get all non-dakuten, non-youon characters.
        allHiraToSound.addDeck(hiraToSound[NORMAL]);
        allKataToSound.addDeck(kataToSound[NORMAL]);
        allHiraToKata.addDeck(hiraToKata[NORMAL]);
        
        // Get all characters with dakuten only.
        if (useDakuten)
        {
            allHiraToSound.addDeck(hiraToSound[DAKUTEN]);
            allKataToSound.addDeck(kataToSound[DAKUTEN]);
            allHiraToKata.addDeck(hiraToKata[DAKUTEN]);
        }
        
        // Get all non-dakuten youon characters.
        if (useYouon)
        {
            allHiraToSound.addDeck(hiraToSound[YOUON]);
            allKataToSound.addDeck(kataToSound[YOUON]);
            allHiraToKata.addDeck(hiraToKata[YOUON]);
        }
        
        // Get all youon characters with dakuten.
        if (useDakuten && useYouon)
        {
            allHiraToSound.addDeck(hiraToSound[BOTH]);
            allKataToSound.addDeck(kataToSound[BOTH]);
            allHiraToKata.addDeck(hiraToKata[BOTH]);
        }
        
        Deck deck = new Deck();
        
        // Use hiragana related cards.
        if (useHiragana)
            deck.addDeck(allHiraToSound);
        
        // Use katakana related card.
        if (useKatakana)
            deck.addDeck(allKataToSound);
        
        // Use cards with both hiragana and katakana.
        if (useHiragana && useKatakana)
            deck.addDeck(allHiraToKata);
        
        return deck;
    }