Reuse workspace in the other WithWorkspace method as well

Same as #541, with some refactoring.

cc @chtheis @sc68cal