public void ProvideHint(Problem currProblem)
    {
        //maybe make this a couroutine that can "iterate" thru each hint step
                //each of which is an audio file, except for the last which involves a visual change as wellS

        userInputRouter.DisplayLettersOf (currProblem.TargetWord (false));

                switch (currHintIdx) {
                case 0:

                        AudioSourceController.PushClip (sound_out_word);
                        break;

                case 1:
                        currProblem.PlaySoundedOutWord ();
                        break;

                }

                StudentsDataHandler.instance.LogEvent ("requested_hint", currHintIdx + "", "NA");
    }
    public void SetUpNextProblem()
    {
        //get the next specific problem from the ProblemType class
                ClearSavedUserChanges ();
                hintController.Reset ();

                currProblem = ProblemsRepository.instance.GetNextProblem ();

                StudentsDataHandler.instance.RecordActivityTargetWord (currProblem.TargetWord (false));

                lockedPositionHandler.ResetForNewProblem ();
                lockedPositionHandler.RememberPositionsThatShouldNotBeChanged (currProblem.InitialWord, currProblem.TargetWord (false).Trim ());

                arduinoLetterController.ReplaceEachLetterWithBlank ();
                arduinoLetterController.PlaceWordInLetterGrid (currProblem.InitialWord);
                arduinoLetterController.UpdateDefaultColoursAndSoundsOfLetters (false);
                arduinoLetterController.LockAllLetters ();

                userInputRouter.RequestTurnOffImage ();

                hintController.DeActivateHintButton ();

                PlayInstructions (); //dont bother telling to place initial letters during assessment mode

                state = State.PLACE_INITIAL_LETTERS;

                //In case the initial state is already correct (...which happens when the user needs to build the word "from scratch". This makes it so
                //we don;t need to trigger the check by adding a "blank"!
                ChangeProblemStateIfAllLockedPositionsAHaveCorrectCharacter ();

                //
    }