This would make it easier for applications to store configured values, and to use all the defaults or all the defaults except a few, but raises a few issues. First, the defaults for voice and language would depend on the default for synthesizer, and the same for all other arrangements of the three parameters, because the library is designed to choose the best voice if only a synthesizer is given, or choose the right synthesizer if only a voice name is given, or choose a voice if only a language is given, etc. Also, each synthesizer should be able to have its own default speech rate and pitch to respect operating system or Speech Dispatcher settings. Maybe the struct can just contain Option values, but I'm not sure this is better than just Option parameters, and would be complicated to store in some languages.