Extracted the UIJob into it's own class
Fiddled with the restrictions
Added a new method to "know" a workspace

I know a workspace if it has an ID. If it doesn't I create one.

I use this to determine if I need to get a snapshot or not. If I don't know the workspace, I create the snapshot and give it an ID so I can reference it later.