Added a "type" field to the abstract to be used in its identification and set along with the number.
Added the "field" to reporting, so that the type and number are used from the abstract rather then hard coding the type in reporting.
Update TO-DO list while I was at it.
diff --git a/TODO b/TODO
index 7e704af..6735b82 100644
--- a/TODO
+++ b/TODO
@@ -6,7 +6,6 @@
 * audio calibration? Need appropriate sample
 * reporting for workload mode 
 * Add GPU stats to reports [csv,html]
-* In tunables suggest writing min_power to all SATA ports 
 
 
 Nice to Have
@@ -19,3 +18,4 @@
 DONE for 2.2
 ----------------------------------
 * interactive mode scrolling 
+* In tunables suggest writing min_power to all SATA ports 
diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
index e65d828..18cbffc 100644
--- a/src/cpu/cpu.cpp
+++ b/src/cpu/cpu.cpp
@@ -87,6 +87,7 @@
 		ret = new class cpu_package;
 
 	ret->set_number(package, cpu);
+	ret->set_type("Package");
 	ret->childcount = 0;
 
 	sprintf(packagename, _("cpu package %i"), cpu);
@@ -122,6 +123,7 @@
 		ret = new class cpu_core;
 	ret->set_number(core, cpu);
 	ret->childcount = 0;
+	ret->set_type("Core");
 
 	return ret;
 }
@@ -132,6 +134,7 @@
 
 	ret = new class i965_core;
 	ret->childcount = 0;
+	ret->set_type("GPU");
 
 	return ret;
 }
@@ -162,6 +165,7 @@
 	if (!ret)
 		ret = new class cpu_linux;
 	ret->set_number(number, number);
+	ret->set_type("CPU");
 	ret->childcount = 0;
 
 	return ret;
@@ -239,7 +243,7 @@
 
 
 	package = system_level.children[0];
-	
+
 	core_number = package->children.size();
 
 	if (package->children.size() <= core_number)
@@ -314,7 +318,7 @@
 			if (number >= 0) {
 				handle_one_cpu(number, vendor, family, model);
 				set_max_cpu(number);
-				number = -2; 
+				number = -2;
 			}
 		}
 	}
@@ -430,7 +434,7 @@
 				if (line == LEVEL_HEADER) {
 					if (first_core) {
 						report.begin_cell(CELL_FIRST_PACKAGE_HEADER);
-						report.addf(__("Package %i"), _package->get_number());
+						report.addf(__("%s %i"), _package->get_type(), _package->get_number());
 					} else {
 						report.begin_cell(CELL_EMPTY_PACKAGE_HEADER);
 						report.add_empty_cell();
@@ -454,10 +458,10 @@
 
 					if (line == LEVEL_HEADER) {
 						report.begin_cell(CELL_CORE_HEADER);
-						report.addf(__("Core %i"), _core->get_number());
-					} else {
-						report.begin_cell(CELL_STATE_NAME);
-						report.add(_core->fill_cstate_name(line, buffer));
+						report.addf(__("%s %i"), _core->get_type(), _core->get_number());
+                                       } else {
+                                                report.begin_cell(CELL_STATE_NAME);
+                                                report.add(_core->fill_cstate_name(line, buffer));
 						report.begin_cell(CELL_CORE_STATE_VALUE);
 						report.add(_core->fill_cstate_line(line, buffer2));
 					}
@@ -474,7 +478,7 @@
 					report.set_cpu_number(cpu);
 					if (line == LEVEL_HEADER) {
 						report.begin_cell(CELL_CPU_CSTATE_HEADER);
-						report.addf(__("CPU %i"), _cpu->get_number());
+						report.addf(__("%s %i"), _cpu->get_type(), _cpu->get_number());
 						continue;
 					}
 
@@ -507,10 +511,10 @@
 	int line;
 	class abstract_cpu *_package, * _core, * _cpu;
 	unsigned int i, pstates_num;
-	
+
 	for (i = 0, pstates_num = 0; i < all_cpus.size(); i++)
 		if (all_cpus[i] && all_cpus[i]->pstates.size() > pstates_num)
-			pstates_num = all_cpus[i]->pstates.size(); 
+			pstates_num = all_cpus[i]->pstates.size();
 
 	report.begin_section(SECTION_CPUFREQ);
 	report.add_header("Processor Frequency Report");
@@ -544,7 +548,7 @@
 				if (first_core) {
 					if (line == LEVEL_HEADER) {
 						report.begin_cell(CELL_FIRST_PACKAGE_HEADER);
-						report.addf(__("Package %i"), _package->get_number());
+						report.addf(__("%s %i"), _package->get_type(), _package->get_number());
 					} else {
 						report.begin_cell(CELL_STATE_NAME);
 						report.add(_package->fill_pstate_name(line, buffer));
@@ -564,7 +568,7 @@
 					buffer2[0] = 0;
 					if (line == LEVEL_HEADER) {
 						report.begin_cell(CELL_CORE_HEADER);
-						report.addf(__("Core %i"), _core->get_number());
+						report.addf(__("%s %i"), _core->get_type(), _core->get_number());
 					} else {
 						report.begin_cell(CELL_STATE_NAME);
 						report.add(_core->fill_pstate_name(line, buffer));
@@ -585,7 +589,7 @@
 					report.set_cpu_number(cpu);
 					if (line == LEVEL_HEADER) {
 						report.begin_cell(CELL_CPU_PSTATE_HEADER);
-						report.addf(__("CPU %i"), _cpu->get_number());
+						report.addf(__("%s %i"), _cpu->get_type(), _cpu->get_number());
 						continue;
 					}
 
@@ -763,7 +767,7 @@
 			cpu->go_idle(time);
 	}
 
-	if (strcmp(event->name, "power_frequency") == 0 
+	if (strcmp(event->name, "power_frequency") == 0
 	|| strcmp(event->name, "cpu_frequency") == 0){
 
 		ret = pevent_get_field_val(NULL, event, "state", &rec, &val, 0);
diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h
index 13340a2..4480b11 100644
--- a/src/cpu/cpu.h
+++ b/src/cpu/cpu.h
@@ -88,6 +88,7 @@
 	uint64_t	total_stamp;
 	int	number;
 	int	childcount;
+	const char*    name;
 	bool	idle, old_idle;
 	uint64_t	current_frequency;
 	uint64_t	effective_frequency;
@@ -101,8 +102,10 @@
 	class abstract_cpu *parent;
 
 
-	void		set_number(int _number, int cpu) {this->number = _number; this->first_cpu = cpu;};
-	int		get_number(void) { return number; };
+	void	set_number(int _number, int cpu) {this->number = _number; this->first_cpu = cpu;};
+	void	set_type(const char* _name) {this->name = _name;};
+	int	get_number(void) { return number; };
+	const char* get_type(void) { return name; };
 
 	virtual void	measurement_start(void);
 	virtual void	measurement_end(void);