performFinish now executes in a WorkspaceJob