add some fault tolerances