docs: public void start( Device device , Resolution resolution , Listener listener )
  	{
  		if( resolution != Resolution.MEDIUM ) {
  			throw new IllegalArgumentException("Depth image is always at medium resolution.  Possible bug in kinect driver");
  		}
  
  		this.device = device;
  		this.listener = listener;
  
  		// Configure the kinect
  		device.setDepthFormat(DepthFormat.REGISTERED,resolution);
  		device.setVideoFormat(VideoFormat.RGB, resolution);
  
  		// declare data structures
  		int w = UtilOpenKinect.getWidth(resolution);
  		int h = UtilOpenKinect.getHeight(resolution);
  
  		dataDepth = new byte[ w*h*2 ];
  		dataRgb = new byte[ w*h*3 ];
  		depth.reshape(w,h);
  		rgb.reshape(w,h);
  
  		thread = new CombineThread();
  		thread.start();
  		// make sure the thread is running before moving on
  		while(!thread.running)
  			Thread.yield();
  
  		// start the streaming
  		device.startDepth(new DepthHandler() {
  			@Override
  			public void onFrameReceived(FrameMode mode, ByteBuffer frame, int timestamp) {
  				processDepth(frame,timestamp);
  			}
  		});
  
  		device.startVideo(new VideoHandler() {
  			@Override
  			public void onFrameReceived(FrameMode mode, ByteBuffer frame, int timestamp) {
  				processRgb(frame,timestamp);
  			}
  		});
  	}