private void doToolkitCalibration() {
		if (toolkitCalibrationIndex == null) {
			// starting
			toolkitCalibrationIndex = 0;
		} 
		else if (lastDelay == TOOLKIT_CALIBRATION_DELAY_NOTIFY) {
			toolkitCalibrationIndex++;
		}
		else if (currentTuioObject != null) {
			saveToolkitCalibration(
					tangibles.get(toolkitCalibrationIndex),
					currentTuioObject,
					currentBufferedImage);
			//toolkitCalibrationIndex++;
			long delay = TOOLKIT_CALIBRATION_DELAY_NOTIFY;
			lastDelay = delay;
			setTimeoutforToolkitCalibration(delay);
			return;
		}
		
		if (toolkitCalibrationIndex < tangibles.size()) {
			long delay = lastDelay;
			if (lastDelay == 0) {
				delay = TOOLKIT_CALIBRATION_DELAY_SETUP;
			} else if (lastDelay == TOOLKIT_CALIBRATION_DELAY_SETUP) {
				delay = TOOLKIT_CALIBRATION_DELAY_READ;
			} else if (lastDelay == TOOLKIT_CALIBRATION_DELAY_READ) {
				// If we get here, it wasn't read
				delay = TOOLKIT_CALIBRATION_DELAY_SETUP;
			} else if (lastDelay == TOOLKIT_CALIBRATION_DELAY_NOTIFY) {
				delay = TOOLKIT_CALIBRATION_DELAY_SETUP;
			}
			lastDelay = delay;
			setTimeoutforToolkitCalibration(delay);
		} else {
			toolkitCalibrationIndex = null;
			reset();
			slate.changeMode(slate.getMode());
		}
	}