\begin{abstract} Congruence closure algorithms for solving word problems for finitely presented algebras have also been used in combining decision procedures. On the other hand, congruence closure can itself be looked upon as a combination problem. Taking this view leads us to define the notion of an {\em abstract congruence closure}. We present a completion based description of how such closures can be constructed. Congruence closure algorithms that appear in the literature (Downey-Sethi-Tarjan, Nelson-Oppen and Shostak) can be seen as specific implementations of this abstract completion. This abstract view of congruence closure has added advantages. Apart from giving a better understanding, it helps us to come up with efficient algorithms for congruence closure. It is easily extended to include $AC$ function symbols. This gives us completion based transition rules for computing an $AC$ congruence closure. Congruence closure has also been used in construction of ground convergent systems, and in performing efficient normalization. These applications are also simplified and generalized in this framework. Of particular interest is the problem of construction of ground AC convergent system using AC congruence closure. \end{abstract}