Index: tests/concurrent/examples/boundedBufferEXT.cfa
===================================================================
--- tests/concurrent/examples/boundedBufferEXT.cfa	(revision c1ed2eed49812bcfa4987e47ccc9eda7d2fbf8c0)
+++ tests/concurrent/examples/boundedBufferEXT.cfa	(revision 8d61d62047f1cb5e83072f3f31c5e10058991bb5)
@@ -10,6 +10,6 @@
 // Created On       : Wed Apr 18 22:52:12 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 22 13:41:33 2019
-// Update Count     : 12
+// Last Modified On : Fri Jun 21 08:19:20 2019
+// Update Count     : 14
 //
 
@@ -52,5 +52,5 @@
 }
 
-const int Sentinel = -1;
+enum { Sentinel = -1 };
 
 thread Producer {
@@ -59,5 +59,5 @@
 };
 void main( Producer & prod ) with( prod ) {
-	for ( int i = 1; i <= N; i += 1 ) {
+	for ( i; 1 ~= N ) {
 		yield( random( 5 ) );
 		insert( buffer, 1 );
@@ -99,19 +99,19 @@
 	srandom( 1003 );
 
-	for ( i = 0; i < Cons; i += 1 ) {					// create consumers
+	for ( i; Cons ) {									// create consumers
 		cons[i] = new( &buffer, sums[i] );
 	} // for
-	for ( i = 0; i < Prods; i += 1 ) {					// create producers
+	for ( i; Prods ) {									// create producers
 		prods[i] = new( &buffer, 100000 );
 	} // for
 
-	for ( i = 0; i < Prods; i += 1 ) {					// wait for producers to finish
+	for ( i; Prods ) {									// wait for producers to finish
 		delete( prods[i] );
 	} // for
-	for ( i = 0; i < Cons; i += 1 ) {					// generate sentinal values to stop consumers
+	for ( i; Cons ) {									// generate sentinal values to stop consumers
 		insert( buffer, Sentinel );
 	} // for
 	int sum = 0;
-	for ( i = 0; i < Cons; i += 1 ) {					// wait for consumers to finish
+	for ( i; Cons ) {									// wait for consumers to finish
 		delete( cons[i] );
 		sum += sums[i];
Index: tests/concurrent/examples/boundedBufferINT.cfa
===================================================================
--- tests/concurrent/examples/boundedBufferINT.cfa	(revision c1ed2eed49812bcfa4987e47ccc9eda7d2fbf8c0)
+++ tests/concurrent/examples/boundedBufferINT.cfa	(revision 8d61d62047f1cb5e83072f3f31c5e10058991bb5)
@@ -10,6 +10,6 @@
 // Created On       : Mon Oct 30 12:45:13 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 22 13:41:52 2019
-// Update Count     : 88
+// Last Modified On : Fri Jun 21 08:20:46 2019
+// Update Count     : 90
 //
 
@@ -53,5 +53,5 @@
 }
 
-const int Sentinel = -1;
+enum { Sentinel = -1 };
 
 thread Producer {
@@ -60,5 +60,5 @@
 };
 void main( Producer & prod ) with( prod ) {
-	for ( int i = 1; i <= N; i += 1 ) {
+	for ( i; 1 ~= N ) {
 		yield( random( 5 ) );
 		insert( buffer, 1 );
@@ -100,19 +100,19 @@
 	srandom( 1003 );
 
-	for ( i = 0; i < Cons; i += 1 ) {					// create consumers
+	for ( i; Cons ) {									// create consumers
 		cons[i] = new( &buffer, sums[i] );
 	} // for
-	for ( i = 0; i < Prods; i += 1 ) {					// create producers
+	for ( i; Prods ) {									// create producers
 		prods[i] = new( &buffer, 100000 );
 	} // for
 
-	for ( i = 0; i < Prods; i += 1 ) {					// wait for producers to finish
+	for ( i; Prods ) {									// wait for producers to finish
 		delete( prods[i] );
 	} // for
-	for ( i = 0; i < Cons; i += 1 ) {					// generate sentinal values to stop consumers
+	for ( i; Cons ) {									// generate sentinal values to stop consumers
 		insert( buffer, Sentinel );
 	} // for
 	int sum = 0;
-	for ( i = 0; i < Cons; i += 1 ) {					// wait for consumers to finish
+	for ( i; Cons ) {									// wait for consumers to finish
 		delete( cons[i] );
 		sum += sums[i];
Index: tests/concurrent/examples/boundedBufferTHREAD.cfa
===================================================================
--- tests/concurrent/examples/boundedBufferTHREAD.cfa	(revision 8d61d62047f1cb5e83072f3f31c5e10058991bb5)
+++ tests/concurrent/examples/boundedBufferTHREAD.cfa	(revision 8d61d62047f1cb5e83072f3f31c5e10058991bb5)
@@ -0,0 +1,130 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+// 
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// boundedBufferEXT.c --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed Apr 18 22:52:12 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jun 21 08:15:58 2019
+// Update Count     : 23
+//
+
+#include <stdlib.hfa>									// random
+#include <fstream.hfa>
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <unistd.h>										// getpid
+
+//Duration default_preemption() { return 0; }
+
+enum { BufferSize = 50 };
+
+//forall( otype T ) {
+	thread Buffer {
+		int front, back, count;
+		int elements[BufferSize];
+	}; // Buffer
+
+	void ?{}( Buffer & buffer ) with( buffer ) { [front, back, count] = 0; }
+
+	int query( Buffer & buffer ) { return buffer.count; } // read-only, no mutual exclusion
+
+	void insert( Buffer & mutex buffer, int elem ) with( buffer ) {
+		elements[back] = elem;
+	} // insert
+
+	int remove( Buffer & mutex buffer ) with( buffer ) {
+		return elements[front];
+	} // remove
+
+	void main( Buffer & buffer ) with( buffer ) {
+		for () {
+			waitfor( ^?{}, buffer ) {
+				break;
+			} or when ( count != 20 ) waitfor( insert, buffer ) {
+				back = (back + 1) % 20;
+				count += 1;
+			} or when ( count != 0 ) waitfor( remove, buffer ) {
+				front = (front + 1) % 20;
+				count -= 1;
+			} // waitfor
+		} // for
+	} // main
+//}
+
+enum { Sentinel = -1 };
+
+thread Producer {
+	Buffer & buffer;
+	unsigned int N;
+};
+void main( Producer & prod ) with( prod ) {
+	for ( i; 1 ~= N ) {
+		yield( random( 5 ) );
+		insert( buffer, 1 );
+	} // for
+}
+void ?{}( Producer & prod, Buffer * buffer, int N ) {
+	&prod.buffer = buffer;
+	prod.N = N;
+}
+
+thread Consumer {
+	Buffer & buffer;
+	int & sum;											// summation of producer values
+};
+void main( Consumer & cons ) with( cons ) {
+	sum = 0;
+	for () {
+		yield( random( 5 ) );
+		int item = remove( buffer );
+	  if ( item == Sentinel ) break;					// sentinel ?
+		sum += item;
+	} // for
+}
+void ?{}( Consumer & cons, Buffer * buffer, int & sum ) {
+	&cons.buffer = buffer;
+	&cons.sum = &sum;
+}
+
+int main() {
+	Buffer buffer;
+	enum { Prods = 4, Cons = 5 };
+	Producer * prods[Prods];
+	Consumer * cons[Cons];
+	int sums[Cons];
+	int i;
+	processor p;
+
+	//srandom( getpid() );
+	srandom( 1003 );
+
+	for ( i; Cons ) {									// create consumers
+		cons[i] = new( &buffer, sums[i] );
+	} // for
+	for ( i; Prods ) {									// create producers
+		prods[i] = new( &buffer, 100000 );
+	} // for
+
+	for ( i; Prods ) {									// wait for producers to finish
+		delete( prods[i] );
+	} // for
+	for ( i; Cons ) {									// generate sentinal values to stop consumers
+		insert( buffer, Sentinel );
+	} // for
+	int sum = 0;
+	for ( i; Cons ) {									// wait for consumers to finish
+		delete( cons[i] );
+		sum += sums[i];
+	} // for
+	sout | "total:" | sum;
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa boundedBufferTHREAD.cfa" //
+// End: //
Index: tests/concurrent/examples/datingService.cfa
===================================================================
--- tests/concurrent/examples/datingService.cfa	(revision c1ed2eed49812bcfa4987e47ccc9eda7d2fbf8c0)
+++ tests/concurrent/examples/datingService.cfa	(revision 8d61d62047f1cb5e83072f3f31c5e10058991bb5)
@@ -10,6 +10,6 @@
 // Created On       : Mon Oct 30 12:56:20 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 22 13:41:39 2019
-// Update Count     : 31
+// Last Modified On : Fri Jun 21 11:32:34 2019
+// Update Count     : 38
 //
 
@@ -95,15 +95,15 @@
 	srandom( /*getpid()*/ 103 );
 
-	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
-		girls[i] = new( &TheExchange, i, i );
+	for ( i; (unsigned int)CompCodes ) {
+		girls[i] = new( &TheExchange, i, i );			// TheExchange constructor needs unsigned int
 		boys[i]  = new( &TheExchange, i, CompCodes - ( i + 1 ) );
 	} // for
 
-	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
+	for ( i; CompCodes ) {
 		delete( boys[i] );
 		delete( girls[i] );
 	} // for
 
-	for ( unsigned int i = 0; i < CompCodes; i += 1 ) {
+	for ( i; CompCodes ) {
 		if ( girlck[ boyck[i] ] != boyck[ girlck[i] ] ) abort();
 	} // for
Index: tests/concurrent/examples/gortn.cfa
===================================================================
--- tests/concurrent/examples/gortn.cfa	(revision c1ed2eed49812bcfa4987e47ccc9eda7d2fbf8c0)
+++ tests/concurrent/examples/gortn.cfa	(revision 8d61d62047f1cb5e83072f3f31c5e10058991bb5)
@@ -10,6 +10,6 @@
 // Created On       : Wed Feb 20 08:02:37 2019
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 20 08:35:55 2019
-// Update Count     : 3
+// Last Modified On : Fri Jun 21 08:25:03 2019
+// Update Count     : 4
 // 
 
@@ -18,12 +18,12 @@
 
 struct Msg { int i, j; };
-thread Gortn { int i;  float f;  Msg m; };
-void ^?{}( Gortn & mutex ) {}
-void mem1( Gortn & mutex gortn, int i ) { gortn.i = i; }
-void mem2( Gortn & mutex gortn, float f ) { gortn.f = f; }
-void mem3( Gortn & mutex gortn, Msg m ) { gortn.m = m; }
+thread GoRtn { int i;  float f;  Msg m; };
+void ^?{}( GoRtn & mutex ) {}
+void mem1( GoRtn & mutex gortn, int i ) { gortn.i = i; }
+void mem2( GoRtn & mutex gortn, float f ) { gortn.f = f; }
+void mem3( GoRtn & mutex gortn, Msg m ) { gortn.m = m; }
 
-void main( Gortn & gortn ) with( gortn ) {
-	for ( ;; ) {
+void main( GoRtn & gortn ) with( gortn ) {
+	for () {
 		waitfor( mem1, gortn ) sout | i;
 		or waitfor( mem2, gortn ) sout | f;
@@ -33,5 +33,5 @@
 }
 int main() {
-	Gortn gortn;										// start thread
+	GoRtn gortn;										// start thread
 	mem1( gortn, 0 );
 	mem2( gortn, 2.5 );
Index: tests/concurrent/examples/quickSort.cfa
===================================================================
--- tests/concurrent/examples/quickSort.cfa	(revision c1ed2eed49812bcfa4987e47ccc9eda7d2fbf8c0)
+++ tests/concurrent/examples/quickSort.cfa	(revision 8d61d62047f1cb5e83072f3f31c5e10058991bb5)
@@ -11,6 +11,6 @@
 // Created On       : Wed Dec  6 12:15:52 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 22 13:42:01 2019
-// Update Count     : 170
+// Last Modified On : Fri Jun 21 08:27:45 2019
+// Update Count     : 172
 //
 
@@ -138,5 +138,5 @@
 		  if ( eof( unsortedfile ) ) break;
 			int * values = alloc( size );				// values to be sorted, too large to put on stack
-			for ( int counter = 0; counter < size; counter += 1 ) { // read unsorted numbers
+			for ( counter; size ) {						// read unsorted numbers
 				unsortedfile | values[counter];
 				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | nl | "  ";
@@ -148,5 +148,5 @@
 				Quicksort QS = { values, size - 1, 0 }; // sort values
 			} // wait until sort tasks terminate
-			for ( int counter = 0; counter < size; counter += 1 ) { // print sorted list
+			for ( counter; size ) {						// print sorted list
 				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | nl | "  ";
 				sortedfile | values[counter];
@@ -163,5 +163,5 @@
 
 		int * values = alloc( size );				// values to be sorted, too large to put on stack
-		for ( int counter = 0; counter < size; counter += 1 ) { // generate unsorted numbers
+		for ( counter; size ) {						// generate unsorted numbers
 			values[counter] = size - counter;			// descending values
 		} // for
@@ -170,5 +170,5 @@
 		} // wait until sort tasks terminate
 
-		// for ( int counter = 0; counter < size - 1; counter += 1 ) { // check sorting
+		// for ( counter; size - 1 ) {				// check sorting
 		// 	if ( values[counter] > values[counter + 1] ) abort();
 		// } // for
Index: tests/concurrent/examples/quickSort.generic.cfa
===================================================================
--- tests/concurrent/examples/quickSort.generic.cfa	(revision c1ed2eed49812bcfa4987e47ccc9eda7d2fbf8c0)
+++ tests/concurrent/examples/quickSort.generic.cfa	(revision 8d61d62047f1cb5e83072f3f31c5e10058991bb5)
@@ -11,6 +11,6 @@
 // Created On       : Wed Dec  6 12:15:52 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 15 14:52:41 2019
-// Update Count     : 147
+// Last Modified On : Fri Jun 21 08:28:20 2019
+// Update Count     : 149
 //
 
@@ -141,5 +141,5 @@
 		  if ( eof( unsortedfile ) ) break;
 			ELEMTYPE * values = alloc( size );			// values to be sorted, too large to put on stack
-			for ( int counter = 0; counter < size; counter += 1 ) { // read unsorted numbers
+			for ( counter; size ) {						// read unsorted numbers
 				unsortedfile | values[counter];
 				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | nl | "  ";
@@ -151,5 +151,5 @@
 				Quicksort(ELEMTYPE) QS = { values, size - 1, 0 }; // sort values
 			} // wait until sort tasks terminate
-			for ( int counter = 0; counter < size; counter += 1 ) { // print sorted list
+			for ( counter; size ) {						// print sorted list
 				if ( counter != 0 && counter % ValuesPerLine == 0 ) sortedfile | nl | "  ";
 				sortedfile | values[counter];
@@ -166,5 +166,5 @@
 
 		ELEMTYPE * values = alloc( size );				// values to be sorted, too large to put on stack
-		for ( int counter = 0; counter < size; counter += 1 ) { // generate unsorted numbers
+		for ( counter; size ) {							// generate unsorted numbers
 			values[counter] = size - counter;			// descending values
 		} // for
@@ -173,5 +173,5 @@
 		} // wait until sort tasks terminate
 
-		// for ( int counter = 0; counter < size - 1; counter += 1 ) { // check sorting
+		// for ( counter; size - 1 ) {					// check sorting
 		// 	if ( values[counter] > values[counter + 1] ) abort();
 		// } // for
