refactored out CL code into new computedevice