It's not broken. It just works under assumptions applicable to the most common use cases. I know that a software engineer will sneer about dependencies of this kind, but such assumptions really simplify reality/software/whatever.
And yes, they are a pain in the ass when it comes to changes and that's why one should be careful with unnecessary changes.