Given a set of n different deterministic finite state machines (DFSMs) modeling a distributed system, we examine the problem of tolerating $f$ crash or Byzantine faults in such a system. The traditional approach to this problem involves replication and requires n.f backup DFSMs for crash faults and 2n.f backup DFSMs for Byzantine faults. For example, to tolerate two crash faults in three DFSMs, a replication based technique needs two copies of each of the given DFSMs, resulting in a system with six backup DFSMs. In this paper, we question the optimality of such an approach and present a generic approach called (f,m)fusion that permits lesser number of backups than the replication based approaches. Given n different DFSMs, we examine the problem of tolerating f faults using just m additional DFSMs. We introduce the theory of fusion machines and provide an algorithm to generate backup DFSMs for both crash and Byzantine faults. Further, we have implemented these algorithms and tested them for various examples.