Consider a network of asynchronous processors communicating by sending messages over unreliable lines. There are many advantages to restricting all communications to a spanning tree. To overcome the possible failure of k′ < k edges, we describe a communication protocol which uses k rooted spanning trees having the property that for every vertex ν the paths from ν to the root are edge-disjoint. An algorithm to find two such trees in a 2-edge connected graph is described that runs in time proportional in the number of edges in the graph. This algorithm has a distributed version which finds the two trees even when a single edge fails during their construction. The two trees then may be used to transform certain centralized algorithms to distributed, reliable, and efficient ones. © 1988.