abstracted out workspace-type-specific code