add more failure handling