unique_ptr instead of shared, no longer relies on first work being in-progress.