Thus far all of the information used by our Pulsar Functions has been provided inside the incoming messages. While this is an effective way to exchange information, it is not the most efficient or desirable way for Pulsar Functions to exchange information with one another. The biggest drawback to this approach is that it creates a dependency on the message source to provide your Pulsar function with the information it needs to do its job. This violates the encapsulation principle of object-oriented design, which dictates that the internal logic of a function should not be exposed to the outside world. Currently, any changes to the logic inside one function might require changes to the upstream function that provides the incoming messages.