move HasWork draining into batch