today i had to change the implementation of a crucial system feature. i am glad i did design up front, as i only needed to change implementation details. the other system parts dealing with my code still worked as before, as the interface visible to the outside world remained unchanged. loose coupling is a good thing.