A generic GZ algorithm for the generalized eigenvalue problem Ax = lambdaBx is presented. This is actually a large class of algorithms that includes multiple-step QZ and LZ algorithms, as well as QZ-LZ hybrids, as special cases. First the convergence properties of the GZ algorithm are discussed, then a study of implementations is undertaken. The notion of an elimination rule is introduced as a device for studying the QZ, LZ and other algorithms simultaneously. To each elimination rule there corresponds an explicit GZ algorithm. Through a careful study of the steps involved in executing the explicit algorithm, it is discovered how to implement the algorithm implicitly by bulge chasing. The approach taken here was introduced by Miminis and Paige in the context of the QR algorithm for the ordinary eigenvalue problem. It is more involved than the standard approach, but it yields a much clearer picture of the relationship between the implicit and explicit versions of the algorithm. Furthermore, it is more general than the standard approach, as it does not require the use of a theorem of ''Implicit-Q'' type. Finally a generalization of the implicit GZ algorithm, the generic bulge-chasing algorithm, is introduced. It is proved that the generic bulge-chasing algorithm implicitly performs iterations of the generic GZ algorithm. Thus the convergence theorems that are proved for the generic GZ algorithm hold for the generic bulge-chasing algorithm as well.