public List<String[]> getCSVData() {
		
		List<String[]> data = new ArrayList<String[]>();
		
		data.add(new String[] {
				"id",
				"length",
				"startTime",
				"target",
				"targetX",
				"targetY",
				"targetGridX",
				"targetGridY",
				"userX",
				"userY",
				"userGridX",
				"userGridY",
				"gridClickCorrect",
				"gridClickRT",
				"lineupStimulus",
				"lineupClickCorrect",
				"lineupClickRT",
			});
		
		// Fill in the basic part 
		data.add(new String[] {
			String.valueOf(id),
			String.valueOf(length),
			String.valueOf(startTime),
			String.valueOf(target),   // target might be null early in the Trial, but who cares.
			String.valueOf(targetFinalPos.getX()),
			String.valueOf(targetFinalPos.getY()),
			String.valueOf(targetFinalGridPos.getX()),
			String.valueOf(targetFinalGridPos.getY()),
			String.valueOf(userClickPos.getX()),
			String.valueOf(userClickPos.getY()),
			String.valueOf(userClickGridPos.getX()),
			String.valueOf(userClickGridPos.getY()),
			String.valueOf(gridClickCorrect),
			String.valueOf(gridClickRT),
			String.valueOf(lineupStimulus),
			String.valueOf(lineupClickCorrect),
			String.valueOf(lineupClickRT),
		});
		
		// Data for each distractor/target location, for each frame
		// Each target has its own column
		String[] isATargetHeader = new String[1 + stimList.size() * 2];
		String[] targetTrackingHeader = new String[1 + stimList.size() * 2];
		int colIdx=0;
		targetTrackingHeader[colIdx++] = "Frame Timestamp";
		for(Stimulus stimulus : stimList) {
			isATargetHeader[colIdx] = stimulus == target ? "target" : "";
			targetTrackingHeader[colIdx++] = stimulus.toString() + "_x";
			isATargetHeader[colIdx] = stimulus == target ? "target" : "";
			targetTrackingHeader[colIdx++] = stimulus.toString() + "_y";
		}
		data.add(isATargetHeader);
		data.add(targetTrackingHeader);
		
		// Each frame has its own row
		int rowIdx=0;
		while(true) {
			
			if(rowIdx >= frameCount) {
				break;
			}
			
			String[] frame = new String[1 + stimList.size() * 2];
			colIdx=0;
			frame[colIdx++] = String.valueOf(
					positionList.get(stimList.iterator().next()).get(rowIdx).getTimestamp() -
					startTime );
			for( Stimulus stimulus : stimList ) {
				frame[colIdx++] = String.valueOf(positionList.get(stimulus).get(rowIdx).getX());
				frame[colIdx++] = String.valueOf(positionList.get(stimulus).get(rowIdx).getY());
			}
			data.add(frame);
			
			rowIdx++;
		}
		
		data.add(new String[] {
			"END New Trial"
		});
		
		return data;
	}