Separating different aspects of a program, and encapsulating them inside well defined modules, is considered a good engineering
discipline. This discipline is particularly desirable in the development of distributed agreement algorithms which are known
to be difficult and error prone. For such algorithms, one aspect that is important to encapsulate is failure detection. In
fact, a complete encapsulation was proven to be feasible in the context of distributed systems with process crash failures,
by using black-box failure detectors. This paper discusses the feasibility of a similar encapsulation in the context of Byzantine (also called arbitrary or malicious) failures. We argue that, in the Byzantine context, it is just impossible to achieve the level of encapsulation of the original
crash failure detector model. However, we also argue that there is some room for an intermediate approach where algorithms
that solve agreement problems, such as consensus and atomic broadcast, can still benefit from grey-box failure detectors that partially encapsulate Byzantine failure detection.