Add desktop capture.
Initial refactor for multiple devices.