working on adjusting workspace threadlocal to set/clear properly, and adding getAllWorkspaces() feature.