add retry function