Index: tests/concurrent/.expect/ctor-check.txt
===================================================================
--- tests/concurrent/.expect/ctor-check.txt	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/concurrent/.expect/ctor-check.txt	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -2,5 +2,5 @@
 ?{}: function
 ... with parameters
-  lvalue reference to instance of struct Empty with body
+  this: lvalue reference to instance of struct Empty with body
 ... returning nothing
  with body
Index: tests/concurrent/.expect/semaphore.txt
===================================================================
--- tests/concurrent/.expect/semaphore.txt	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/.expect/spinaphore.txt
===================================================================
--- tests/concurrent/.expect/spinaphore.txt	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ 	(revision )
@@ -1,3 +1,0 @@
-Starting
-Done!
-Match!
Index: tests/concurrent/preempt.cfa
===================================================================
--- tests/concurrent/preempt.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/concurrent/preempt.cfa	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -1,2 +1,3 @@
+#include <fstream.hfa>
 #include <kernel.hfa>
 #include <thread.hfa>
@@ -25,12 +26,15 @@
 thread worker_t {
 	int value;
+	unsigned spin;
 };
 
 void ?{}( worker_t & this, int value ) {
 	this.value = value;
+	this.spin = 0;
 }
 
 void main(worker_t & this) {
 	while(TEST(counter < N)) {
+		if(this.spin > 100_000_000) abort | "Worker" | this.value | "has been spinning too long! (" | this.spin | ")";
 		__cfaabi_check_preemption();
 		if( (counter % 7) == this.value ) {
@@ -40,7 +44,9 @@
 			if( (next % 100) == 0 ) printf("%d\n", (int)next);
 			__cfaabi_check_preemption();
+			this.spin = 0;
 		}
 		__cfaabi_check_preemption();
 		KICK_WATCHDOG;
+		this.spin++;
 	}
 }
Index: tests/concurrent/semaphore.cfa
===================================================================
--- tests/concurrent/semaphore.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ 	(revision )
@@ -1,78 +1,0 @@
-#include <fstream.hfa>
-#include <locks.hfa>
-#include <thread.hfa>
-#include <mutex_stmt.hfa>
-
-enum { num_blockers = 17, num_unblockers = 13 };
-
-void thrash() {
-	unsigned t[100];
-	for(i; 100) {
-		t[i] = 0xDEADBEEF;
-	}
-}
-
-ThreadBenaphore ben;
-
-// const unsigned int num_blocks = 25000;
-const unsigned int num_blocks = 5;
-
-thread Blocker {
-	size_t sum;
-};
-
-void main(Blocker & this) {
-	thread$ * me = active_thread();
-	this.sum = 0;
-	for(num_blocks) {
-		this.sum += (unsigned)me;
-		thrash();
-		P(ben);
-		if(((thread&)this).seqable.next != 0p) mutex(sout) sout | "Link not invalidated";
-		thrash();
-	}
-}
-
-thread Unblocker {
-	size_t sum;
-};
-
-void main(Unblocker & this) {
-	this.sum = 0;
-	LOOP: for() {
-		waitfor( ^?{} : this) {
-			break LOOP;
-		}
-		or else {}
-
-		thread$ * t = V(ben, false);
-		if(t) {
-			this.sum += (unsigned)t;
-			unpark(t);
-		}
-		yield(random(10));
-	}
-}
-
-int main() {
-	size_t usum = 0;
-	size_t bsum = 0;
-
-	sout | "Starting";
-	{
-		Blocker   blockers  [num_blockers  ];
-		Unblocker unblockers[num_unblockers];
-
-		for(i;num_blockers) {
-			bsum += join(blockers[i]).sum;
-		}
-
-		sout | "Done!";
-
-		for(i;num_unblockers) {
-			usum += join(unblockers[i]).sum;
-		}
-	}
-	if(bsum == usum) sout | "Match!";
-	else sout | "No Match!" | usum | "!=" | bsum;
-}
Index: tests/concurrent/spinaphore.cfa
===================================================================
--- tests/concurrent/spinaphore.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ 	(revision )
@@ -1,94 +1,0 @@
-#include <fstream.hfa>
-#include <locks.hfa>
-#include <thread.hfa>
-
-enum { num_blockers = 17, num_unblockers = 13 };
-
-void thrash() {
-	unsigned t[100];
-	for(i; 100) {
-		t[i] = 0xDEADBEEF;
-	}
-}
-
-Semaphore0nary sem;
-
-const unsigned int num_blocks = 1625;
-
-thread Blocker {
-	size_t sum;
-};
-void main(Blocker & this);
-
-Blocker * from_thread(thread$ * t) {
-	Blocker & nullb = *(Blocker*)0p;
-	thread$ & nullt = (thread&)nullb;
-	uintptr_t offset  = (uintptr_t)&nullt;
-	uintptr_t address = ((uintptr_t)t) - offset;
-	return (Blocker*)address;
-}
-
-void main(Blocker & this) {
-	thread$ * me = active_thread();
-	Blocker * me1 = &this;
-	Blocker * me2 = from_thread(me);
-	if( me1 != me2 ) sout | "Bad casting!" | me1 | "vs" | me2;
-	this.sum = 0;
-	for(num_blocks) {
-		P(sem);
-		if(((thread&)this).seqable.next != 0p) sout | "Link not invalidated";
-	}
-}
-
-const unsigned int num_unblocks = 2125;
-
-thread Unblocker {
-	size_t sum;
-};
-
-void main(Unblocker & this) {
-	this.sum = 0;
-	unsigned me = (unsigned)(uintptr_t)&this;
-	for(num_unblocks) {
-		thread$ * t = V(sem, false);
-		Blocker * b = from_thread(t);
-		b->sum += me;
-		this.sum += (unsigned)(uintptr_t)b;
-		unpark(t);
-		yield(random(10));
-	}
-}
-
-int main() {
-	size_t usum = 0;
-	size_t bsum = 0;
-
-	if((num_unblocks * num_unblockers) != (num_blocks * num_blockers)) sout | "Mismatched Operations: " | (num_unblocks * num_unblockers) | "vs" | (num_blocks * num_blockers);
-
-	sout | "Starting";
-	{
-		Blocker   blockers  [num_blockers  ];
-		Unblocker unblockers[num_unblockers];
-
-		for(i;num_blockers) {
-			for(num_blocks)
-				usum += (unsigned)(uintptr_t)&blockers[i];
-		}
-
-		for(i;num_unblockers) {
-			for(num_unblocks)
-				bsum += (unsigned)(uintptr_t)&unblockers[i];
-		}
-
-		for(i;num_blockers) {
-			bsum -= join(blockers[i]).sum;
-		}
-
-		for(i;num_unblockers) {
-			usum -= join(unblockers[i]).sum;
-		}
-	}
-	sout | "Done!";
-	if(bsum == 0 && usum == 0) sout | "Match!";
-	else sout | "No Match!" | usum | "/" | bsum;
-}
Index: tests/device/cpu.cfa
===================================================================
--- tests/device/cpu.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/device/cpu.cfa	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -15,6 +15,7 @@
 
 
+#include <device/cpu.hfa>
+#include <limits.hfa>
 #include <fstream.hfa>
-#include <device/cpu.hfa>
 #include <stdlib.hfa>
 
@@ -118,5 +119,5 @@
 
 	unsigned found_level = 0;
-	unsigned found = -1u;
+	unsigned found = MAX;
 	for(i; idxs) {
 		unsigned idx = idxs - 1 - i;
@@ -136,5 +137,5 @@
 	}
 
-	/* paranoid */ verify(found != -1u);
+	/* paranoid */ verify(found != MAX);
 	return found;
 }
Index: tests/io/io-acquire-in.cfa
===================================================================
--- tests/io/io-acquire-in.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/io/io-acquire-in.cfa	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -10,6 +10,6 @@
 // Created On       : Mon Mar  1 18:40:09 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Oct  6 18:04:58 2021
-// Update Count     : 72
+// Last Modified On : Fri Jan 14 09:13:43 2022
+// Update Count     : 73
 // 
 
@@ -17,4 +17,6 @@
 #include <thread.hfa>
 #include <mutex_stmt.hfa>
+
+Duration default_preemption() { return 0; }
 
 	// above output used as input to parallel threads 
Index: tests/io/io-acquire-no-io.cfa
===================================================================
--- tests/io/io-acquire-no-io.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/io/io-acquire-no-io.cfa	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -10,6 +10,6 @@
 // Created On       : Mon Mar  1 18:40:09 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Oct  6 18:04:58 2021
-// Update Count     : 72
+// Last Modified On : Fri Jan 14 09:13:54 2022
+// Update Count     : 73
 // 
 
@@ -17,4 +17,6 @@
 #include <thread.hfa>
 #include <mutex_stmt.hfa>
+
+Duration default_preemption() { return 0; }
 
 multiple_acquisition_lock soutLock, sinLock;
Index: tests/io/io-acquire-out.cfa
===================================================================
--- tests/io/io-acquire-out.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/io/io-acquire-out.cfa	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -10,6 +10,6 @@
 // Created On       : Mon Mar  1 18:40:09 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Oct  6 18:04:58 2021
-// Update Count     : 72
+// Last Modified On : Fri Jan 14 09:14:06 2022
+// Update Count     : 73
 // 
 
@@ -17,4 +17,6 @@
 #include <thread.hfa>
 #include <mutex_stmt.hfa>
+
+Duration default_preemption() { return 0; }
 
 thread T {};
Index: tests/io/io-acquire.cfa
===================================================================
--- tests/io/io-acquire.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/io/io-acquire.cfa	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -10,6 +10,6 @@
 // Created On       : Mon Mar  1 18:40:09 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jan 10 07:57:12 2022
-// Update Count     : 73
+// Last Modified On : Fri Jan 14 09:13:18 2022
+// Update Count     : 74
 // 
 
@@ -17,4 +17,6 @@
 #include <thread.hfa>
 #include <mutex_stmt.hfa>
+
+Duration default_preemption() { return 0; }
 
 thread T {};
Index: tests/unified_locking/.expect/locks.txt
===================================================================
--- tests/unified_locking/.expect/locks.txt	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/unified_locking/.expect/locks.txt	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -11,18 +11,14 @@
 Start Test 6: owner lock and condition variable 3 wait/notify all
 Done Test 6
-Start Test 7: fast lock and condition variable single wait/notify
+Start Test 7: linear backoff lock and condition variable single wait/notify
 Done Test 7
-Start Test 8: fast lock and condition variable 3 wait/notify all
+Start Test 8: linear backoff lock and condition variable 3 wait/notify all
 Done Test 8
-Start Test 9: linear backoff lock and condition variable single wait/notify
+Start Test 9: multi acquisiton lock and condition variable multiple acquire and wait/notify
 Done Test 9
-Start Test 10: linear backoff lock and condition variable 3 wait/notify all
+Start Test 10: owner lock and condition variable multiple acquire and wait/notify
 Done Test 10
-Start Test 11: multi acquisiton lock and condition variable multiple acquire and wait/notify
+Start Test 11: no lock condition variable wait/notify
 Done Test 11
-Start Test 12: owner lock and condition variable multiple acquire and wait/notify
+Start Test 12: locked condition variable wait/notify with front()
 Done Test 12
-Start Test 13: no lock condition variable wait/notify
-Done Test 13
-Start Test 14: locked condition variable wait/notify with front()
-Done Test 14
Index: tests/unified_locking/locks.cfa
===================================================================
--- tests/unified_locking/locks.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ tests/unified_locking/locks.cfa	(revision 6b2d444b03e3fdf10a1f2c2f1f0351a67de058ee)
@@ -15,7 +15,4 @@
 condition_variable( owner_lock ) c_o;
 
-fast_lock f;
-condition_variable( fast_lock ) c_f;
-
 linear_backoff_then_block_lock l;
 condition_variable( linear_backoff_then_block_lock ) c_l;
@@ -74,32 +71,4 @@
 		}
 		unlock(s);
-	}
-}
-
-thread T_C_F_WS1 {};
-
-void main( T_C_F_WS1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(f);
-		if(empty(c_f) && i != num_times - 1) {
-			wait(c_f,f);
-		}else{
-			notify_one(c_f);
-		}
-		unlock(f);
-	}
-}
-
-thread T_C_F_WB1 {};
-
-void main( T_C_F_WB1 & this ) {
-	for (unsigned int i = 0; i < num_times; i++) {
-		lock(f);
-		if(counter(c_f) == 3 || i == num_times - 1) {
-			notify_all(c_f);
-		}else{
-			wait(c_f,f);
-		}
-		unlock(f);
 	}
 }
@@ -317,51 +286,39 @@
 	printf("Done Test 6\n");
 
-	printf("Start Test 7: fast lock and condition variable single wait/notify\n");
-	{
-		T_C_F_WS1 t1[2];
+	printf("Start Test 7: linear backoff lock and condition variable single wait/notify\n");
+	{
+		T_C_L_WS1 t1[2];
 	}
 	printf("Done Test 7\n");
 
-	printf("Start Test 8: fast lock and condition variable 3 wait/notify all\n");
-	{
-		T_C_F_WB1 t1[4];
+	printf("Start Test 8: linear backoff lock and condition variable 3 wait/notify all\n");
+	{
+		T_C_L_WB1 t1[4];
 	}
 	printf("Done Test 8\n");
 
-	printf("Start Test 9: linear backoff lock and condition variable single wait/notify\n");
-	{
-		T_C_L_WS1 t1[2];
+	printf("Start Test 9: multi acquisiton lock and condition variable multiple acquire and wait/notify\n");
+	{
+		T_C_M_WS2 t1[2];
 	}
 	printf("Done Test 9\n");
 
-	printf("Start Test 10: linear backoff lock and condition variable 3 wait/notify all\n");
-	{
-		T_C_L_WB1 t1[4];
+	printf("Start Test 10: owner lock and condition variable multiple acquire and wait/notify\n");
+	{
+		T_C_O_WS2 t1[2];
 	}
 	printf("Done Test 10\n");
 
-	printf("Start Test 11: multi acquisiton lock and condition variable multiple acquire and wait/notify\n");
-	{
-		T_C_M_WS2 t1[2];
-	}
-	printf("Done Test 11\n");
-
-	printf("Start Test 12: owner lock and condition variable multiple acquire and wait/notify\n");
-	{
-		T_C_O_WS2 t1[2];
-	}
-	printf("Done Test 12\n");
-
-	printf("Start Test 13: no lock condition variable wait/notify\n");
+	printf("Start Test 11: no lock condition variable wait/notify\n");
 	{
 		T_C_NLW t1;
 		T_C_NLS t2;
 	}
-	printf("Done Test 13\n");
-
-	printf("Start Test 14: locked condition variable wait/notify with front()\n");
+	printf("Done Test 11\n");
+
+	printf("Start Test 12: locked condition variable wait/notify with front()\n");
 	{
 		T_C_S_WNF t1[2];
 	}
-	printf("Done Test 14\n");
-}
+	printf("Done Test 12\n");
+}
Index: tests/zombies/fastlock.cfa
===================================================================
--- tests/zombies/fastlock.cfa	(revision f57f6ea0123dde6ef60d03a36bc14b98636c0d45)
+++ 	(revision )
@@ -1,8 +1,0 @@
-#include <locks.hfa>
-
-#define LOCK fast_lock
-#include "mutex_test.hfa"
-
-int main() {
-    test();
-}
