Index: libcfa/src/concurrency/ready_queue.cfa
===================================================================
--- libcfa/src/concurrency/ready_queue.cfa	(revision 63f42a8be743d7f6e1b14768415f496e2fc88e0b)
+++ libcfa/src/concurrency/ready_queue.cfa	(revision 78ea291f554d49a9ea3b3d85aeab620c92fa7089)
@@ -448,5 +448,4 @@
 	// If list looks empty retry
 	if( is_empty(lane) ) {
-		__STATS( stats.espec++; )
 		return 0p;
 	}
@@ -454,5 +453,4 @@
 	// If we can't get the lock retry
 	if( !__atomic_try_acquire(&lane.lock) ) {
-		__STATS( stats.elock++; )
 		return 0p;
 	}
@@ -461,5 +459,4 @@
 	if( is_empty(lane) ) {
 		__atomic_unlock(&lane.lock);
-		__STATS( stats.eempty++; )
 		return 0p;
 	}
@@ -471,4 +468,5 @@
 
 	/* paranoid */ verify(thrd);
+	/* paranoid */ verify(tsv);
 	/* paranoid */ verify(lane.lock);
 
Index: libcfa/src/concurrency/stats.cfa
===================================================================
--- libcfa/src/concurrency/stats.cfa	(revision 63f42a8be743d7f6e1b14768415f496e2fc88e0b)
+++ libcfa/src/concurrency/stats.cfa	(revision 78ea291f554d49a9ea3b3d85aeab620c92fa7089)
@@ -19,25 +19,14 @@
 		stats->ready.pop.local .attempt = 0;
 		stats->ready.pop.local .success = 0;
-		stats->ready.pop.local .elock   = 0;
-		stats->ready.pop.local .eempty  = 0;
-		stats->ready.pop.local .espec   = 0;
 		stats->ready.pop.help  .attempt = 0;
 		stats->ready.pop.help  .success = 0;
-		stats->ready.pop.help  .elock   = 0;
-		stats->ready.pop.help  .eempty  = 0;
-		stats->ready.pop.help  .espec   = 0;
 		stats->ready.pop.steal .attempt = 0;
 		stats->ready.pop.steal .success = 0;
-		stats->ready.pop.steal .elock   = 0;
-		stats->ready.pop.steal .eempty  = 0;
-		stats->ready.pop.steal .espec   = 0;
 		stats->ready.pop.search.attempt = 0;
 		stats->ready.pop.search.success = 0;
-		stats->ready.pop.search.elock   = 0;
-		stats->ready.pop.search.eempty  = 0;
-		stats->ready.pop.search.espec   = 0;
 		stats->ready.threads.migration = 0;
 		stats->ready.threads.extunpark = 0;
 		stats->ready.threads.threads   = 0;
+		stats->ready.threads.cthreads  = 0;
 		stats->ready.sleep.halts   = 0;
 		stats->ready.sleep.cancels = 0;
@@ -59,5 +48,4 @@
 			stats->io.calls.completed   = 0;
 			stats->io.calls.errors.busy = 0;
-			stats->io.poller.sleeps     = 0;
 		#endif
 
@@ -87,25 +75,14 @@
 		tally_one( &cltr->ready.pop.local .attempt, &proc->ready.pop.local .attempt );
 		tally_one( &cltr->ready.pop.local .success, &proc->ready.pop.local .success );
-		tally_one( &cltr->ready.pop.local .elock  , &proc->ready.pop.local .elock   );
-		tally_one( &cltr->ready.pop.local .eempty , &proc->ready.pop.local .eempty  );
-		tally_one( &cltr->ready.pop.local .espec  , &proc->ready.pop.local .espec   );
 		tally_one( &cltr->ready.pop.help  .attempt, &proc->ready.pop.help  .attempt );
 		tally_one( &cltr->ready.pop.help  .success, &proc->ready.pop.help  .success );
-		tally_one( &cltr->ready.pop.help  .elock  , &proc->ready.pop.help  .elock   );
-		tally_one( &cltr->ready.pop.help  .eempty , &proc->ready.pop.help  .eempty  );
-		tally_one( &cltr->ready.pop.help  .espec  , &proc->ready.pop.help  .espec   );
 		tally_one( &cltr->ready.pop.steal .attempt, &proc->ready.pop.steal .attempt );
 		tally_one( &cltr->ready.pop.steal .success, &proc->ready.pop.steal .success );
-		tally_one( &cltr->ready.pop.steal .elock  , &proc->ready.pop.steal .elock   );
-		tally_one( &cltr->ready.pop.steal .eempty , &proc->ready.pop.steal .eempty  );
-		tally_one( &cltr->ready.pop.steal .espec  , &proc->ready.pop.steal .espec   );
 		tally_one( &cltr->ready.pop.search.attempt, &proc->ready.pop.search.attempt );
 		tally_one( &cltr->ready.pop.search.success, &proc->ready.pop.search.success );
-		tally_one( &cltr->ready.pop.search.elock  , &proc->ready.pop.search.elock   );
-		tally_one( &cltr->ready.pop.search.eempty , &proc->ready.pop.search.eempty  );
-		tally_one( &cltr->ready.pop.search.espec  , &proc->ready.pop.search.espec   );
 		tally_one( &cltr->ready.threads.migration , &proc->ready.threads.migration  );
 		tally_one( &cltr->ready.threads.extunpark , &proc->ready.threads.extunpark  );
 		tally_one( &cltr->ready.threads.threads   , &proc->ready.threads.threads    );
+		tally_one( &cltr->ready.threads.cthreads  , &proc->ready.threads.cthreads   );
 		tally_one( &cltr->ready.sleep.halts       , &proc->ready.sleep.halts        );
 		tally_one( &cltr->ready.sleep.cancels     , &proc->ready.sleep.cancels      );
@@ -127,5 +104,4 @@
 			tally_one( &cltr->io.calls.completed  , &proc->io.calls.completed   );
 			tally_one( &cltr->io.calls.errors.busy, &proc->io.calls.errors.busy );
-			tally_one( &cltr->io.poller.sleeps    , &proc->io.poller.sleeps     );
 		#endif
 	}
@@ -140,9 +116,10 @@
 		if( flags & CFA_STATS_READY_Q ) {
 
-			sstr | "----- " | type | "\"" | name | "\" (" | "" | id | "" | ") - Ready Q Stats -----";
+			sstr | "----- " | type | " \"" | name | "\" (" | "" | id | "" | ") - Ready Q Stats -----";
 
 			uint64_t totalR = ready.pop.local.success + ready.pop.help.success + ready.pop.steal.success + ready.pop.search.success;
 			uint64_t totalS = ready.push.local.success + ready.push.share.success + ready.push.extrn.success;
-			sstr | "- totals   : " | eng3(totalR) | "run," | eng3(totalS) | "schd (" | eng3(ready.push.extrn.success) | "ext," | eng3(ready.threads.migration) | "mig," | eng3(ready.threads.extunpark) | " eupk)";
+			sstr | "- totals   : " | eng3(totalR) | "run," | eng3(totalS) | "schd (" | eng3(ready.push.extrn.success) | "ext,"
+			     | eng3(ready.threads.migration) | "mig," | eng3(ready.threads.extunpark) | " eupk," | ready.threads.threads | " t," | ready.threads.cthreads | " cthr)";
 
 			double push_len = ((double)ready.push.local.attempt + ready.push.share.attempt + ready.push.extrn.attempt) / totalS;
@@ -157,14 +134,14 @@
 			double rLcl_pc = (100.0 * (double)ready.pop.local .success) / totalR;
 			sstr | "- local    : " | eng3(ready.pop.local .success) | "-"| ws(3, 3, rLcl_pc) | '%'
-			     | " (" | eng3(ready.pop.local .attempt) | " try," | eng3(ready.pop.local .espec) | " spc," | eng3(ready.pop.local .elock) | " lck," | eng3(ready.pop.local .eempty) | " ept)";
+			     | " (" | eng3(ready.pop.local .attempt) | " try)";
 			double rHlp_pc = (100.0 * (double)ready.pop.help  .success) / totalR;
 			sstr | "- help     : " | eng3(ready.pop.help  .success) | "-"| ws(3, 3, rHlp_pc) | '%'
-			     | " (" | eng3(ready.pop.help  .attempt) | " try," | eng3(ready.pop.help  .espec) | " spc," | eng3(ready.pop.help  .elock) | " lck," | eng3(ready.pop.help  .eempty) | " ept)";
+			     | " (" | eng3(ready.pop.help  .attempt) | " try)";
 			double rStl_pc = (100.0 * (double)ready.pop.steal .success) / totalR;
 			sstr | "- steal    : " | eng3(ready.pop.steal .success) | "-"| ws(3, 3, rStl_pc) | '%'
-			     | " (" | eng3(ready.pop.steal .attempt) | " try," | eng3(ready.pop.steal .espec) | " spc," | eng3(ready.pop.steal .elock) | " lck," | eng3(ready.pop.steal .eempty) | " ept)";
+			     | " (" | eng3(ready.pop.steal .attempt) | " try)";
 			double rSch_pc = (100.0 * (double)ready.pop.search.success) / totalR;
 			sstr | "- search   : " | eng3(ready.pop.search.success) | "-"| ws(3, 3, rSch_pc) | '%'
-			     | " (" | eng3(ready.pop.search.attempt) | " try," | eng3(ready.pop.search.espec) | " spc," | eng3(ready.pop.search.elock) | " lck," | eng3(ready.pop.search.eempty) | " ept)";
+			     | " (" | eng3(ready.pop.search.attempt) | " try)";
 
 			sstr | "- Idle Slp : " | eng3(ready.sleep.halts) | "halt," | eng3(ready.sleep.cancels) | "cancel," | eng3(ready.sleep.wakes) | "wake," | eng3(ready.sleep.exits) | "exit";
@@ -174,24 +151,32 @@
 		#if defined(CFA_HAVE_LINUX_IO_URING_H)
 			if( flags & CFA_STATS_IO ) {
-				sstr | "----- " | type | "\"" | name | "\" (" | "" | id | "" | ") - I/O Stats -----";
+				sstr | "----- " | type | " \"" | name | "\" (" | "" | id | "" | ") - I/O Stats -----";
 
 				uint64_t total_allocs = io.alloc.fast + io.alloc.slow;
-				double avgfasta = (100.0 * (double)io.alloc.fast) / total_allocs;
-				sstr | "- total allocations : " | eng3(io.alloc.fast) | "fast," | eng3(io.alloc.slow) | "slow (" | ws(3, 3, avgfasta) | "%)";
-				sstr | "-     failures      : " | eng3(io.alloc.fail) | "oom, " | eng3(io.alloc.revoke) | "rvk, " | eng3(io.alloc.block) | "blk";
 
 				uint64_t total_submits = io.submit.fast + io.submit.slow;
-				double avgfasts = (100.0 * (double)io.submit.fast) / total_submits;
-				sstr | "- total submits     : " | eng3(io.submit.fast) | "fast," | eng3(io.submit.slow) | "slow (" | ws(3, 3, avgfasts) | "%)";
-				sstr | "- flush external    : " | eng3(io.flush.external);
-
-				sstr | "- io_uring_enter    : " | eng3(io.calls.flush) | " (" | eng3(io.calls.drain) | ", " | eng3(io.calls.errors.busy) | " EBUSY)";
+				sstr | "- totals : allc" | eng3(io.alloc .fast) | nonl;
+				if(io.alloc.slow) {
+					double avgfasta = (100.0 * (double)io.alloc.fast) / total_allocs;
+					sstr | "fast," | eng3(io.alloc .slow) | "slow (" | ws(3, 3, avgfasta) | "%)" | nonl;
+				}
+				sstr | " - subm" | eng3(io.submit.fast) | nonl;
+				if(io.alloc.slow) {
+					double avgfasts = (100.0 * (double)io.submit.fast) / total_submits;
+					sstr | "fast," | eng3(io.submit.slow) | "slow (" | ws(3, 3, avgfasts) | "%)" | nonl;
+				}
+				sstr | nl;
+
+				if(io.alloc.fail || io.alloc.revoke || io.alloc.block)
+					sstr | "-     failures      : " | eng3(io.alloc.fail) | "oom, " | eng3(io.alloc.revoke) | "rvk, " | eng3(io.alloc.block) | "blk";
+				if(io.flush.external)
+					sstr | "- flush external    : " | eng3(io.flush.external);
 
 				double avgsubs = ((double)io.calls.submitted) / io.calls.flush;
 				double avgcomp = ((double)io.calls.completed) / io.calls.drain;
-				sstr | "-     submits       : " | eng3(io.calls.submitted) | "(" | ws(3, 3, avgsubs) | "/flush)";
-				sstr | "-     completes     : " | eng3(io.calls.completed) | "(" | ws(3, 3, avgcomp) | "/drain)";
-
-				sstr | "- poller sleeping   : " | eng3(io.poller.sleeps);
+				sstr | "- syscll : "
+				     |   " sub " | eng3(io.calls.flush) | "/" | eng3(io.calls.submitted) | "(" | ws(3, 3, avgsubs) | "/flush)"
+				     | " - cmp " | eng3(io.calls.drain) | "/" | eng3(io.calls.completed) | "(" | ws(3, 3, avgcomp) | "/drain)"
+				     | " - " | eng3(io.calls.errors.busy) | " EBUSY";
 				sstr | nl;
 			}
Index: libcfa/src/concurrency/stats.hfa
===================================================================
--- libcfa/src/concurrency/stats.hfa	(revision 63f42a8be743d7f6e1b14768415f496e2fc88e0b)
+++ libcfa/src/concurrency/stats.hfa	(revision 78ea291f554d49a9ea3b3d85aeab620c92fa7089)
@@ -2,4 +2,5 @@
 
 // #define CFA_STATS_ARRAY 10000
+// #define __CFA_NO_STATISTICS__
 
 #include <stdint.h>
@@ -22,13 +23,4 @@
 		// number of successes at poping
 		volatile uint64_t success;
-
-		// number of attempts failed due to the lock being held
-		volatile uint64_t elock;
-
-		// number of attempts failed due to the queue being empty (lock held)
-		volatile uint64_t eempty;
-
-		// number of attempts failed due to the queue looking empty (lock not held)
-		volatile uint64_t espec;
 	};
 
@@ -71,5 +63,6 @@
 			volatile uint64_t migration;
 			volatile uint64_t extunpark;
-			volatile  int64_t threads; // number of threads in the system, includes only local change
+			volatile  int64_t threads;  // number of threads in the system, includes only local change
+			volatile  int64_t cthreads; // number of threads in the system, includes only local change
 		} threads;
 		struct {
