Side-effects are in direct opposition to encapsulation, yet all too often they are the most useful tools.
Unlike imperative programming, FP avoids side-effects. This pattern is yet another example of how a well-crafted object-oriented design converges upon a functional style.