add fault tolerance