Index: src/tests/coroutine/.expect/coroutine.txt
===================================================================
--- src/tests/coroutine/.expect/coroutine.txt	(revision 0ad0c55af834cd60b4644acba851192ddc6839bd)
+++ 	(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: src/tests/coroutine/coroutine.c
===================================================================
--- src/tests/coroutine/coroutine.c	(revision 0ad0c55af834cd60b4644acba851192ddc6839bd)
+++ 	(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 0ad0c55af834cd60b4644acba851192ddc6839bd)
+++ 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 0ad0c55af834cd60b4644acba851192ddc6839bd)
+++ 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;
