A MicroArchitecture production. (problem) When two objects interact, they often need an OOB (out of band) channel to swap meta information e.g. transaction status and connection status. RichardHenderson. ---- (context) Programming languages use exceptions and return codes/parameters to handle this sort of processing. Exceptions provide the desired out-of-band behaviour in that there may be no in-band return data. They tend to be overloaded with local error data, however, making their use for non-critical faults problematic. They also cannot be used effectively in non-local environments. (solution) Explicitly define OOB handlers. This may be as simple as a separate interface to an object, or may require more complex adaptation. (examples) '''simple interface''' A manager object composes the interacting objects. Each object can now query the OOB channel by method-call. There may be a number of methods, or the particular call may be parameterised within a generic message. Callback functionality may be provided for 'push' style, event-driven processing. '''managed channel''' This time additional 'channel' objects are composed between the parties. This object may be shared e.g. a STDOUT object. This is much more like the traditional shell-script structure. Peers register with the channel object which moderates interactions. The object may be transparent to the client and thus may be composed in as a strategy. This approach also allows easy interception of the messages for external processing. (see TeeAdapter) .