with in_progress guard