Index: src/tests/concurrent/examples/.expect/datingService.txt
===================================================================
--- src/tests/concurrent/examples/.expect/datingService.txt	(revision 65197c2ce4425076f94848e4be37218f1bcc0626)
+++ src/tests/concurrent/examples/.expect/datingService.txt	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
@@ -0,0 +1,40 @@
+Girl:17 is dating Boy at 2 with ccode 17
+ Boy:2 is dating Girl 17 with ccode 17
+ Boy:14 is dating Girl 5 with ccode 5
+Girl:5 is dating Boy at 14 with ccode 5
+ Boy:9 is dating Girl 10 with ccode 10
+Girl:10 is dating Boy at 9 with ccode 10
+ Boy:1 is dating Girl 18 with ccode 18
+Girl:18 is dating Boy at 1 with ccode 18
+ Boy:16 is dating Girl 3 with ccode 3
+Girl:3 is dating Boy at 16 with ccode 3
+ Boy:5 is dating Girl 14 with ccode 14
+Girl:14 is dating Boy at 5 with ccode 14
+ Boy:15 is dating Girl 4 with ccode 4
+Girl:4 is dating Boy at 15 with ccode 4
+Girl:0 is dating Boy at 19 with ccode 0
+ Boy:19 is dating Girl 0 with ccode 0
+Girl:9 is dating Boy at 10 with ccode 9
+ Boy:10 is dating Girl 9 with ccode 9
+Girl:11 is dating Boy at 8 with ccode 11
+ Boy:8 is dating Girl 11 with ccode 11
+ Boy:12 is dating Girl 7 with ccode 7
+Girl:7 is dating Boy at 12 with ccode 7
+ Boy:11 is dating Girl 8 with ccode 8
+Girl:8 is dating Boy at 11 with ccode 8
+Girl:16 is dating Boy at 3 with ccode 16
+ Boy:3 is dating Girl 16 with ccode 16
+Girl:15 is dating Boy at 4 with ccode 15
+ Boy:4 is dating Girl 15 with ccode 15
+Girl:19 is dating Boy at 0 with ccode 19
+ Boy:0 is dating Girl 19 with ccode 19
+Girl:2 is dating Boy at 17 with ccode 2
+ Boy:17 is dating Girl 2 with ccode 2
+ Boy:13 is dating Girl 6 with ccode 6
+Girl:6 is dating Boy at 13 with ccode 6
+ Boy:7 is dating Girl 12 with ccode 12
+Girl:12 is dating Boy at 7 with ccode 12
+Girl:13 is dating Boy at 6 with ccode 13
+ Boy:6 is dating Girl 13 with ccode 13
+Girl:1 is dating Boy at 18 with ccode 1
+ Boy:18 is dating Girl 1 with ccode 1
Index: src/tests/concurrent/examples/boundedBuffer.c
===================================================================
--- src/tests/concurrent/examples/boundedBuffer.c	(revision 65197c2ce4425076f94848e4be37218f1bcc0626)
+++ src/tests/concurrent/examples/boundedBuffer.c	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
@@ -8,6 +8,6 @@
 // Created On       : Mon Oct 30 12:45:13 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct 30 23:02:46 2017
-// Update Count     : 9
+// Last Modified On : Tue Dec  5 23:01:51 2017
+// Update Count     : 10
 //
 
@@ -30,17 +30,17 @@
 int query( Buffer & buffer ) { return buffer.count; }
 
-void insert( Buffer & mutex buffer, int elem ) {
-	if ( buffer.count == 20 ) wait( buffer.empty );
-	buffer.elements[buffer.back] = elem;
-	buffer.back = ( buffer.back + 1 ) % 20;
-	buffer.count += 1;
-	signal( buffer.full );
+void insert( Buffer & mutex buffer, int elem ) with( buffer ) {
+	if ( count == 20 ) wait( empty );
+	elements[back] = elem;
+	back = ( back + 1 ) % 20;
+	count += 1;
+	signal( full );
 }
-int remove( Buffer & mutex buffer ) {
-	if ( buffer.count == 0 ) wait( buffer.full );
-	int elem = buffer.elements[buffer.front];
-	buffer.front = ( buffer.front + 1 ) % 20;
-	buffer.count -= 1;
-	signal( buffer.empty );
+int remove( Buffer & mutex buffer ) with( buffer ) {
+	if ( count == 0 ) wait( full );
+	int elem = elements[front];
+	front = ( front + 1 ) % 20;
+	count -= 1;
+	signal( empty );
 	return elem;
 }
Index: src/tests/concurrent/examples/datingService.c
===================================================================
--- src/tests/concurrent/examples/datingService.c	(revision 65197c2ce4425076f94848e4be37218f1bcc0626)
+++ src/tests/concurrent/examples/datingService.c	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
@@ -9,6 +9,6 @@
 // Created On       : Mon Oct 30 12:56:20 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct 30 23:02:11 2017
-// Update Count     : 15
+// Last Modified On : Tue Dec  5 23:06:40 2017
+// Update Count     : 18
 //
 
@@ -26,24 +26,24 @@
 }; // DatingService
 
-unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) {
-	if ( is_empty( ds.Boys[ccode] ) ) {
-		wait( ds.Girls[ccode] );
-		ds.GirlPhoneNo = PhoneNo;
+unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
+	if ( is_empty( Boys[ccode] ) ) {
+		wait( Girls[ccode] );
+		GirlPhoneNo = PhoneNo;
 	} else {
-		ds.GirlPhoneNo = PhoneNo;
-		signal_block( ds.Boys[ccode] );
+		GirlPhoneNo = PhoneNo;
+		signal_block( Boys[ccode] );
 	} // if
-	return ds.BoyPhoneNo;
+	return BoyPhoneNo;
 } // DatingService girl
 
-unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) {
-	if ( is_empty( ds.Girls[ccode] ) ) {
-		wait( ds.Boys[ccode] );
-		ds.BoyPhoneNo = PhoneNo;
+unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ) {
+	if ( is_empty( Girls[ccode] ) ) {
+		wait( Boys[ccode] );
+		BoyPhoneNo = PhoneNo;
 	} else {
-		ds.BoyPhoneNo = PhoneNo;
-		signal_block( ds.Girls[ccode] );
+		BoyPhoneNo = PhoneNo;
+		signal_block( Girls[ccode] );
 	} // if
-	return ds.GirlPhoneNo;
+	return GirlPhoneNo;
 } // DatingService boy
 
@@ -59,5 +59,5 @@
 	yield( random( 100 ) );								// don't all start at the same time
 	unsigned int partner = girl( g.TheExchange, g.id, g.ccode );
-	//sout | "Girl:" | g.id | "is dating Boy at" | partner | "with ccode" | g.ccode | endl;
+	sout | "Girl:" | g.id | "is dating Boy at" | partner | "with ccode" | g.ccode | endl;
 	girlck[g.id] = partner;
 } // Girl main
@@ -77,5 +77,5 @@
 	yield( random( 100 ) );								// don't all start at the same time
 	unsigned int partner = boy( b.TheExchange, b.id, b.ccode );
-	//sout | " Boy:" | b.id | "is dating Girl" | partner | "with ccode" | b.ccode | endl;
+	sout | " Boy:" | b.id | "is dating Girl" | partner | "with ccode" | b.ccode | endl;
 	boyck[b.id] = partner;
 } // Boy main
@@ -92,5 +92,5 @@
 	Boy  *boys[NoOfPairs];
 
-	random_seed( getpid() );
+	random_seed( /*getpid()*/ 103 );
 
 	for ( unsigned int i = 0; i < NoOfPairs; i += 1 ) {
Index: src/tests/concurrent/examples/matrixSum.c
===================================================================
--- src/tests/concurrent/examples/matrixSum.c	(revision 65197c2ce4425076f94848e4be37218f1bcc0626)
+++ src/tests/concurrent/examples/matrixSum.c	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
@@ -11,6 +11,6 @@
 // Created On       : Mon Oct  9 08:29:28 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Oct 29 21:08:48 2017
-// Update Count     : 2
+// Last Modified On : Tue Dec  5 22:56:46 2017
+// Update Count     : 4
 // 
 
@@ -29,8 +29,8 @@
 }
 
-void main( Adder & adder ) {
-    *adder.subtotal = 0;
-    for ( int c = 0; c < adder.cols; c += 1 ) {
-		*adder.subtotal += adder.row[c];
+void main( Adder & adder ) with( adder ) {
+    *subtotal = 0;
+    for ( int c = 0; c < cols; c += 1 ) {
+		*subtotal += row[c];
     } // for
 }
Index: c/tests/coroutine/.expect/coroutine.txt
===================================================================
--- src/tests/coroutine/.expect/coroutine.txt	(revision 65197c2ce4425076f94848e4be37218f1bcc0626)
+++ 	(revision )
@@ -1,10 +1,0 @@
-0 0
-1 1
-1 1
-2 2
-3 3
-5 5
-8 8
-13 13
-21 21
-34 34
Index: src/tests/coroutine/.expect/fibonacci.txt
===================================================================
--- src/tests/coroutine/.expect/fibonacci.txt	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
+++ src/tests/coroutine/.expect/fibonacci.txt	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
@@ -0,0 +1,10 @@
+0 0
+1 1
+1 1
+2 2
+3 3
+5 5
+8 8
+13 13
+21 21
+34 34
Index: c/tests/coroutine/coroutine.c
===================================================================
--- src/tests/coroutine/coroutine.c	(revision 65197c2ce4425076f94848e4be37218f1bcc0626)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// fibonacci.c --
-//
-// Author           : Thierry Delisle
-// Created On       : Thu Jun  8 07:29:37 2017
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Sep 17 21:38:15 2017
-// Update Count     : 7
-//
-
-#include <fstream>
-#include <coroutine>
-
-coroutine Fibonacci {
-	int fn;												// used for communication
-};
-
-void ?{}( Fibonacci & this ) {
-	this.fn = 0;
-}
-
-void main( Fibonacci & this ) {
-	int fn1, fn2;										// retained between resumes
-	this.fn = 0;										// case 0
-	fn1 = this.fn;
-	suspend();											// restart last resume
-
-	this.fn = 1;										// case 1
-	fn2 = fn1;  fn1 = this.fn;
-	suspend();											// restart last resume
-
-	for ( ;; ) {										// general case
-		this.fn = fn1 + fn2;
-		fn2 = fn1;  fn1 = this.fn;
-		suspend();										// restart last resume
-	} // for
-}
-
-int next( Fibonacci & this ) {
-	resume( this );										// restart last suspend
-	return this.fn;
-}
-
-int main() {
-	Fibonacci f1, f2;
-	for ( int i = 1; i <= 10; i += 1 ) {
-		sout | next( f1 ) | next( f2 ) | endl;
-	} // for
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// compile-command: "cfa fibonacci.c" //
-// End: //
Index: src/tests/coroutine/fibonacci.c
===================================================================
--- src/tests/coroutine/fibonacci.c	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
+++ src/tests/coroutine/fibonacci.c	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
@@ -0,0 +1,53 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fibonacci.c --
+//
+// Author           : Thierry Delisle
+// Created On       : Thu Jun  8 07:29:37 2017
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Dec  5 22:27:54 2017
+// Update Count     : 14
+//
+
+#include <fstream>
+#include <coroutine>
+
+coroutine Fibonacci { int fn; };						// used for communication
+
+void ?{}( Fibonacci & fib ) with( fib ) { fn = 0; }
+
+void main( Fibonacci & fib ) with( fib ) {
+	int fn1, fn2;										// retained between resumes
+
+	fn = 0; fn1 = fn;									// 1st case
+	suspend();											// restart last resume
+
+	fn = 1; fn2 = fn1;  fn1 = fn;						// 2nd case
+	suspend();											// restart last resume
+
+	for ( ;; ) {
+		fn = fn1 + fn2; fn2 = fn1;  fn1 = fn;			// general case
+		suspend();										// restart last resume
+	} // for
+}
+
+int next( Fibonacci & fib ) with( fib ) {
+	resume( fib );										// restart last suspend
+	return fn;
+}
+
+int main() {
+	Fibonacci f1, f2;
+	for ( int i = 1; i <= 10; i += 1 ) {
+		sout | next( f1 ) | next( f2 ) | endl;
+	} // for
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa fibonacci.c" //
+// End: //
Index: src/tests/coroutine/fmtLines.c
===================================================================
--- src/tests/coroutine/fmtLines.c	(revision 65197c2ce4425076f94848e4be37218f1bcc0626)
+++ src/tests/coroutine/fmtLines.c	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
@@ -10,6 +10,6 @@
 // Created On       : Sun Sep 17 21:56:15 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Oct  1 11:57:19 2017
-// Update Count     : 34
+// Last Modified On : Tue Dec  5 21:56:35 2017
+// Update Count     : 38
 // 
 
@@ -26,17 +26,17 @@
 }
 
-void ^?{}( Format & fmt ) {
-	if ( fmt.g != 0 || fmt.b != 0 ) sout | endl;
+void ^?{}( Format & fmt ) with( fmt ) {
+	if ( g != 0 || b != 0 ) sout | endl;
 }
 
-void main( Format & fmt ) {
+void main( Format & fmt ) with( fmt ) {
 	for ( ;; ) {										// for as many characters
-		for ( fmt.g = 0; fmt.g < 5; fmt.g += 1 ) {		// groups of 5 blocks
-			for ( fmt.b = 0; fmt.b < 4; fmt.b += 1 ) {	// blocks of 4 characters
+		for ( g = 0; g < 5; g += 1 ) {					// groups of 5 blocks
+			for ( b = 0; b < 4; b += 1 ) {				// blocks of 4 characters
 				for ( ;; ) {							// for newline characters
 					suspend();
-					if ( fmt.ch != '\n' ) break;		// ignore newline
+					if ( ch != '\n' ) break;			// ignore newline
 				} // for
-				sout | fmt.ch;							// print character
+				sout | ch;								// print character
 			} // for
 			sout | "  ";								// print block separator
Index: src/tests/coroutine/prodcons.c
===================================================================
--- src/tests/coroutine/prodcons.c	(revision 65197c2ce4425076f94848e4be37218f1bcc0626)
+++ src/tests/coroutine/prodcons.c	(revision 971d9f249718f6c7c8e1c2e69360467dab69c8ab)
@@ -10,6 +10,6 @@
 // Created On       : Mon Sep 18 12:23:39 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct 30 23:06:05 2017
-// Update Count     : 42
+// Last Modified On : Tue Dec  5 22:40:55 2017
+// Update Count     : 46
 // 
 
@@ -24,19 +24,19 @@
 
 coroutine Prod {
-	Cons *c;
+	Cons * c;
 	int N, money, receipt;
 };
-void main( Prod & prod ) {								// starter ::main
+void main( Prod & prod ) with( prod ) {					// starter ::main
 	// 1st resume starts here
-	for ( int i = 0; i < prod.N; i += 1 ) {
+	for ( int i = 0; i < N; i += 1 ) {
 		int p1 = random( 100 );
 		int p2 = random( 100 );
 		sout | p1 | " " | p2 | endl;
-		int status = delivery( *prod.c, p1, p2 );
-		sout | " $" | prod.money | endl;
+		int status = delivery( *c, p1, p2 );
+		sout | " $" | money | endl;
 		sout | status | endl;
-		prod.receipt += 1;
+		receipt += 1;
 	}
-	stop( *prod.c );
+	stop( *c );
 	sout | "prod stops" | endl;
 }
@@ -64,12 +64,12 @@
 }
 void ^?{}( Cons & cons ) {}
-void main( Cons & cons ) {								// starter prod
+void main( Cons & cons ) with( cons ) {					// starter prod
 	// 1st resume starts here
 	int money = 1, receipt;
-	for ( ; ! cons.done; ) {
-		sout | cons.p1 | " " | cons.p2 | endl;
+	for ( ; ! done; ) {
+		sout | p1 | " " | p2 | endl;
 		sout | " $" | money | endl;
-		cons.status += 1;
-		receipt = payment( *cons.p, money );
+		status += 1;
+		receipt = payment( *p, money );
 		sout | " #" | receipt | endl;
 		money += 1;
