It is perhaps hard for users to understand why extending software to add new functionality can break existing functionality. Why doesn’t software always get linearly better everywhere ? It turns out adding new things almost inevitably means adapting, changing, re-factoring, and re-working existing already working code – sometimes throwing up surprising new results. Perhaps a bit like extending your road network.