I'm still a little uncomfortable with how registering into the global LanguageManager state (and now some validation too) remains split across defineMode() and Language, but this seems ok enough for now.