Client class restructure
Bring some sanity to progress reporting by moving logic into the camera controller