Index: uspace/app/tasks/tasks.c
===================================================================
--- uspace/app/tasks/tasks.c	(revision e535eeb8ca65f325690f9d79d60ea2f3c9e9da35)
+++ uspace/app/tasks/tasks.c	(revision 9e050558f6fae9d4875108d79011987377ff23fe)
@@ -59,8 +59,7 @@
 {
 	size_t count;
-	task_id_t *ids =
-	    (task_id_t *) stats_get_tasks(&count);
-	
-	if (ids == NULL) {
+	stats_task_t *stats_tasks = stats_get_tasks(&count);
+	
+	if (stats_tasks == NULL) {
 		fprintf(stderr, "%s: Unable to get tasks\n", NAME);
 		return;
@@ -71,24 +70,18 @@
 	size_t i;
 	for (i = 0; i < count; i++) {
-		stats_task_t *stats_task = stats_get_task(ids[i]);
-		if (stats_task != NULL) {
-			uint64_t virtmem, ucycles, kcycles;
-			char vmsuffix, usuffix, ksuffix;
-			
-			order_suffix(stats_task->virtmem, &virtmem, &vmsuffix);
-			order_suffix(stats_task->ucycles, &ucycles, &usuffix);
-			order_suffix(stats_task->kcycles, &kcycles, &ksuffix);
-			
-			printf("%8" PRIu64 "%8u %8" PRIu64"%c %12"
-			    PRIu64 "%c %12" PRIu64 "%c %s\n", ids[i], stats_task->threads,
-			    virtmem, vmsuffix, ucycles, usuffix, kcycles, ksuffix,
-			    stats_task->name);
-			
-			free(stats_task);
-		} else
-			printf("%8" PRIu64 "\n", ids[i]);
-	}
-	
-	free(ids);
+		uint64_t virtmem, ucycles, kcycles;
+		char vmsuffix, usuffix, ksuffix;
+		
+		order_suffix(stats_tasks[i].virtmem, &virtmem, &vmsuffix);
+		order_suffix(stats_tasks[i].ucycles, &ucycles, &usuffix);
+		order_suffix(stats_tasks[i].kcycles, &kcycles, &ksuffix);
+		
+		printf("%8" PRIu64 "%8u %8" PRIu64"%c %12"
+		    PRIu64 "%c %12" PRIu64 "%c %s\n", stats_tasks[i].task_id,
+		    stats_tasks[i].threads, virtmem, vmsuffix, ucycles, usuffix,
+		    kcycles, ksuffix, stats_tasks[i].name);
+	}
+	
+	free(stats_tasks);
 }
 
@@ -96,8 +89,7 @@
 {
 	size_t count;
-	thread_id_t *ids =
-	    (thread_id_t *) stats_get_threads(&count);
-	
-	if (ids == NULL) {
+	stats_thread_t *stats_threads = stats_get_threads(&count);
+	
+	if (stats_threads == NULL) {
 		fprintf(stderr, "%s: Unable to get threads\n", NAME);
 		return;
@@ -107,34 +99,28 @@
 	size_t i;
 	for (i = 0; i < count; i++) {
-		stats_thread_t *stats_thread = stats_get_thread(ids[i]);
-		if (stats_thread != NULL) {
-			if ((all) || (stats_thread->task_id == task_id)) {
-				uint64_t ucycles, kcycles;
-				char usuffix, ksuffix;
-				
-				order_suffix(stats_thread->ucycles, &ucycles, &usuffix);
-				order_suffix(stats_thread->kcycles, &kcycles, &ksuffix);
-				
-				if (stats_thread->on_cpu) {
-					printf("%8" PRIu64 " %-8s %4u %6d %12"
-					    PRIu64"%c %12" PRIu64"%c\n", ids[i],
-					    thread_get_state(stats_thread->state),
-					    stats_thread->cpu, stats_thread->priority,
-					    ucycles, usuffix, kcycles, ksuffix);
-				} else {
-					printf("%8" PRIu64 " %-8s ---- %6d %12"
-					    PRIu64"%c %12" PRIu64"%c\n", ids[i],
-					    thread_get_state(stats_thread->state),
-					    stats_thread->priority,
-					    ucycles, usuffix, kcycles, ksuffix);
-				}
+		if ((all) || (stats_threads[i].task_id == task_id)) {
+			uint64_t ucycles, kcycles;
+			char usuffix, ksuffix;
+			
+			order_suffix(stats_threads[i].ucycles, &ucycles, &usuffix);
+			order_suffix(stats_threads[i].kcycles, &kcycles, &ksuffix);
+			
+			if (stats_threads[i].on_cpu) {
+				printf("%8" PRIu64 " %-8s %4u %6d %12"
+				    PRIu64"%c %12" PRIu64"%c\n", stats_threads[i].thread_id,
+				    thread_get_state(stats_threads[i].state),
+				    stats_threads[i].cpu, stats_threads[i].priority,
+				    ucycles, usuffix, kcycles, ksuffix);
+			} else {
+				printf("%8" PRIu64 " %-8s ---- %6d %12"
+				    PRIu64"%c %12" PRIu64"%c\n", stats_threads[i].thread_id,
+				    thread_get_state(stats_threads[i].state),
+				    stats_threads[i].priority,
+				    ucycles, usuffix, kcycles, ksuffix);
 			}
-			
-			free(stats_thread);
-		} else if (all)
-			printf("%8" PRIu64 "\n", ids[i]);
-	}
-	
-	free(ids);
+		}
+	}
+	
+	free(stats_threads);
 }
 
