This paper presents how the Strategy pattern has been used to build BAST, an extensible object-oriented framework for programming reliable distributed systems. Protocol composition plays a central role in BAST and relies on the notion of protocol class. In this paper, we focus on the recursive use of the Strategy pattern to overcome the limitations of inheritance, when trying to flexibly compose protocols. In a companion paper , we have presented how generic agreement protocol classes can be customized to solve atomic commitment  and total order multicast , which are central problems to transactional systems and to group-oriented systems respectively. In , we also show how BAST allows distributed applications to be made fault-tolerant, by application programmers who are not necessarily skilled in reliability issues.