Another possible approach to reuse protocol implementations is to provide programmers with a toolbox containing reusable components and associate them with design patterns. Both ASX  and CONDUITS+  frameworks can be seen as such toolboxes. The ASX framework provides collaborating C++ components, also known as wrappers, that help producing reusable communication infrastructures. These components are designed to perform common communication-related tasks, e.g., event demultiplexing, event handler dispatching, connection establishment, routing, etc. Several design patterns, such as the Reactor pattern and the Acceptor pattern, act as architectural blueprints that guide programmers in producing reusable and portable code. In CONDUITS+ , two kinds of objects are basically offered: conduits and information chunks, which can be assembled in order to create protocol layers and protocol stacks. Various patterns are also provided to help programmers in building protocols.
However, there is no such thing as protocol object in either of the above frameworks. Since our main intend is to provide programmers with a powerful unifying concept, the protocol object, we did not choose a toolbox approach for BAST. Furthermore, ASX does not promote protocol composition, whereas CONDUITS+ does it in a slightly different way than BAST, as we discuss below.