Indicate the type of training when starting a session.
Keyboard events, their detection and propagation to the SessionController, and its updating of the view. SessionController does a countdown, and main testing loop.
A start on the TextGenerator and RecognitionRatePersister.
Terminate session cleanly on shutdown (if a session is active), otherwise the program doesn't shut down.
Extract Morse definitions away from TextToMorse.
Add persistence of a map of morse characters to their recognition rates - default will be (0, 0) unless explicitly set.
Add parentheses to indicate side-effect.
Tell the TextGenerator which session type is being started.
Move the Koch levels to their own object, and add a function to return the full set of characters for a given Koch level. More skeletal work on the TextGenerator.
Describe the Koch level in the prefs.