Fault Tolerance In Distributed Systems Using Self-Stabilization