protected override void genNextLevel()
    {
        if(! isFirstConfig)
        {
            buildNRecordConfigOutcome(null);
        }
        isFirstConfig = false;

        currLvlConfig = (WAMLevelConfig) lvlConfigGen.getNextLevelConfig(null);

        maxMolesAtATime = currLvlConfig.speed+1;
        minStayDuration_Sec = 5-currLvlConfig.speed;
        maxStayDuration_Sec = 5-currLvlConfig.speed;

        recordPresentedConfig(currLvlConfig);
        if(serverCommunication != null) { serverCommunication.wordDisplayed(currLvlConfig.descriptionLabel,currLvlConfig.languageArea,currLvlConfig.difficulty); }

        lvlOutcome = new WAMLevelOutcome(true);

        // Inidcates if tts should be used.
        descriptionType = (currLvlConfig.useTTS ? 1 : 0);

        leftBananas = maxBananans+currLvlConfig.correctItems.Length;

        if(leftBananas>36)
            leftBananas = 36;

        for(int i=0;i<leftBananas;i++){
            Transform banana = tmpBananas.transform.Find(i.ToString("D2"));
            banana.gameObject.renderer.enabled = true;
        }

        for(int i=leftBananas;i<36;i++){
            Transform banana = tmpBananas.transform.Find(i.ToString("D2"));
            banana.gameObject.renderer.enabled = false;
        }

        correctWords = new List<string>();
        foreach(string s in currLvlConfig.correctItems)
            correctWords.Add(s);

        wordsDisplayed = new List<string>();
        // Create goal board.
        setupGoalBoard();
    }
    protected override void buildNRecordConfigOutcome(System.Object[] para_extraParams)
    {
        // Build outcome object.

        // Trigger record outcome.
        recordOutcomeForConfig(lvlOutcome);
        lvlOutcome = new WAMLevelOutcome(won);
    }