A new approach to software-implemented fault tolerance