I maded InMoov2's peer "mouth" service without any direct internal references (There is no InMoov2.mouth) - and that not only reduced and simplified the amount of code in the service, but allows for very quick and easy swapping between Speech Synthesis services.  For testing I tested swapping between Polly and MarySpeech without restarting.

Much of the code is simplified, because its all message based without a direct reference.  If the service doesn't exist messages "to speak" simply are published but no reciever picks them up.  No more testing "null" cases or npe's !