Index: tests/concurrency/actors/.expect/matrix.txt
===================================================================
--- tests/concurrency/actors/.expect/matrix.txt	(revision a2c2363a574380db06d7194fc74622a5071aae38)
+++ 	(revision )
@@ -1,4 +1,0 @@
-starting
-started
-stopping
-stopped
Index: tests/concurrency/actors/.expect/matrixMultiply.txt
===================================================================
--- tests/concurrency/actors/.expect/matrixMultiply.txt	(revision 60f69f01297f3a37eeaaa17df2a7cffdeb2444ea)
+++ tests/concurrency/actors/.expect/matrixMultiply.txt	(revision 60f69f01297f3a37eeaaa17df2a7cffdeb2444ea)
@@ -0,0 +1,4 @@
+starting
+started
+stopping
+stopped
Index: tests/concurrency/actors/matrix.cfa
===================================================================
--- tests/concurrency/actors/matrix.cfa	(revision a2c2363a574380db06d7194fc74622a5071aae38)
+++ 	(revision )
@@ -1,121 +1,0 @@
-#include <actor.hfa>
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include <string.h>
-#include <stdio.h>
-
-int xr = 500, xc = 500, yc = 500, Processors = 1; // default values, must be signed
-
-struct derived_actor { inline actor; };
-
-struct derived_msg {
-	inline message;
-	int * Z;
-	int * X;
-	int ** Y;
-};
-
-void ?{}( derived_msg & this ) {}
-void ?{}( derived_msg & this, int * Z, int * X, int ** Y ) {
-	set_allocation( this, Nodelete );
-	this.Z = Z;
-	this.X = X;
-	this.Y = Y;
-}
-
-allocation receive( derived_actor & receiver, derived_msg & msg ) {
-	for ( unsigned int i = 0; i < yc; i += 1 ) { // multiply X_row by Y_col and sum products
-		msg.Z[i] = 0;
-		for ( unsigned int j = 0; j < xc; j += 1 ) {
-			msg.Z[i] += msg.X[j] * msg.Y[j][i];
-		} // for
-	} // for
-	return Finished;
-}
-
-int main( int argc, char * argv[] ) {
-	switch ( argc ) {
-	  case 5:
-		if ( strcmp( argv[4], "d" ) != 0 ) {			// default ?
-			Processors = ato( argv[4] );
-			if ( Processors < 1 ) fallthru default;
-		} // if
-	  case 4:
-		if ( strcmp( argv[3], "d" ) != 0 ) {			// default ?
-			xr = ato( argv[3] );
-			if ( xr < 1 ) fallthru default;
-		} // if
-	  case 3:
-		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
-			xc = ato( argv[2] );
-			if ( xc < 1 ) fallthru default;
-		} // if
-	  case 2:
-		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
-			yc = ato( argv[1] );
-			if ( yc < 1 ) fallthru default;
-		} // if
-	  case 1:											// use defaults
-		break;
-	  default:
-		exit | "Usage: " | argv[0]
-			 | " [ yc (> 0) | 'd' (default " | yc
-			 | ") ] [ xc (> 0) | 'd' (default " | xc
-			 | ") ] [ xr (> 0) | 'd' (default " | xr
-			 | ") ] [ processors (> 0) | 'd' (default " | Processors
-			 | ") ]" ;
-	} // switch
-
-	unsigned int r, c;
-	int * Z[xr], * X[xr], * Y[xc];
-
-	for ( r = 0; r < xr; r += 1 ) {						// create/initialize X matrix
-		X[r] = aalloc( xc );
-		for ( c = 0; c < xc; c += 1 ) {
-			X[r][c] = r * c % 37;						// for timing
-		} // for
-	} // for
-	for ( r = 0; r < xc; r += 1 ) {						// create/initialize Y matrix
-		Y[r] = aalloc( yc );
-		for ( c = 0; c < yc; c += 1 ) {
-			Y[r][c] = r * c % 37;						// for timing
-		} // for
-	} // for
-	for ( r = 0; r < xr; r += 1 ) {						// create Z matrix
-		Z[r] = aalloc( yc );
-	} // for
-
-	executor e{ Processors, Processors, Processors == 1 ? 1 : Processors * 16, true };
-
-	sout | "starting";
-
-	start_actor_system( e );
-
-	sout | "started";
-
-	derived_msg messages[xr];
-
-	derived_actor actors[xr];
-
-	for ( unsigned int r = 0; r < xr; r += 1 ) {
-		messages[r]{ Z[r], X[r], Y };
-	} // for
-
-	for ( unsigned int r = 0; r < xr; r += 1 ) {
-		actors[r] | messages[r];
-	} // for
-
-	sout | "stopping";
-
-	stop_actor_system();
-
-	sout | "stopped";
-
-	for ( r = 0; r < xr; r += 1 ) {						// deallocate X and Z matrices
-		free( X[r] );
-		free( Z[r] );
-	} // for
-	for ( r = 0; r < xc; r += 1 ) {						// deallocate Y matrix
-		free( Y[r] );
-	} // for
-}
Index: tests/concurrency/actors/matrixMultiply.cfa
===================================================================
--- tests/concurrency/actors/matrixMultiply.cfa	(revision 60f69f01297f3a37eeaaa17df2a7cffdeb2444ea)
+++ tests/concurrency/actors/matrixMultiply.cfa	(revision 60f69f01297f3a37eeaaa17df2a7cffdeb2444ea)
@@ -0,0 +1,121 @@
+#include <actor.hfa>
+#include <fstream.hfa>
+#include <stdlib.hfa>
+#include <string.h>
+#include <stdio.h>
+
+int xr = 500, xc = 500, yc = 500, Processors = 1; // default values, must be signed
+
+struct derived_actor { inline actor; };
+
+struct derived_msg {
+	inline message;
+	int * Z;
+	int * X;
+	int ** Y;
+};
+
+void ?{}( derived_msg & this ) {}
+void ?{}( derived_msg & this, int * Z, int * X, int ** Y ) {
+	set_allocation( this, Nodelete );
+	this.Z = Z;
+	this.X = X;
+	this.Y = Y;
+}
+
+allocation receive( derived_actor & receiver, derived_msg & msg ) {
+	for ( unsigned int i = 0; i < yc; i += 1 ) { // multiply X_row by Y_col and sum products
+		msg.Z[i] = 0;
+		for ( unsigned int j = 0; j < xc; j += 1 ) {
+			msg.Z[i] += msg.X[j] * msg.Y[j][i];
+		} // for
+	} // for
+	return Finished;
+}
+
+int main( int argc, char * argv[] ) {
+	switch ( argc ) {
+	  case 5:
+		if ( strcmp( argv[4], "d" ) != 0 ) {			// default ?
+			Processors = ato( argv[4] );
+			if ( Processors < 1 ) fallthru default;
+		} // if
+	  case 4:
+		if ( strcmp( argv[3], "d" ) != 0 ) {			// default ?
+			xr = ato( argv[3] );
+			if ( xr < 1 ) fallthru default;
+		} // if
+	  case 3:
+		if ( strcmp( argv[2], "d" ) != 0 ) {			// default ?
+			xc = ato( argv[2] );
+			if ( xc < 1 ) fallthru default;
+		} // if
+	  case 2:
+		if ( strcmp( argv[1], "d" ) != 0 ) {			// default ?
+			yc = ato( argv[1] );
+			if ( yc < 1 ) fallthru default;
+		} // if
+	  case 1:											// use defaults
+		break;
+	  default:
+		exit | "Usage: " | argv[0]
+			 | " [ yc (> 0) | 'd' (default " | yc
+			 | ") ] [ xc (> 0) | 'd' (default " | xc
+			 | ") ] [ xr (> 0) | 'd' (default " | xr
+			 | ") ] [ processors (> 0) | 'd' (default " | Processors
+			 | ") ]" ;
+	} // switch
+
+	unsigned int r, c;
+	int * Z[xr], * X[xr], * Y[xc];
+
+	for ( r = 0; r < xr; r += 1 ) {						// create/initialize X matrix
+		X[r] = aalloc( xc );
+		for ( c = 0; c < xc; c += 1 ) {
+			X[r][c] = r * c % 37;						// for timing
+		} // for
+	} // for
+	for ( r = 0; r < xc; r += 1 ) {						// create/initialize Y matrix
+		Y[r] = aalloc( yc );
+		for ( c = 0; c < yc; c += 1 ) {
+			Y[r][c] = r * c % 37;						// for timing
+		} // for
+	} // for
+	for ( r = 0; r < xr; r += 1 ) {						// create Z matrix
+		Z[r] = aalloc( yc );
+	} // for
+
+	executor e{ Processors, Processors, Processors == 1 ? 1 : Processors * 16, true };
+
+	sout | "starting";
+
+	start_actor_system( e );
+
+	sout | "started";
+
+	derived_msg messages[xr];
+
+	derived_actor actors[xr];
+
+	for ( unsigned int r = 0; r < xr; r += 1 ) {
+		messages[r]{ Z[r], X[r], Y };
+	} // for
+
+	for ( unsigned int r = 0; r < xr; r += 1 ) {
+		actors[r] | messages[r];
+	} // for
+
+	sout | "stopping";
+
+	stop_actor_system();
+
+	sout | "stopped";
+
+	for ( r = 0; r < xr; r += 1 ) {						// deallocate X and Z matrices
+		free( X[r] );
+		free( Z[r] );
+	} // for
+	for ( r = 0; r < xc; r += 1 ) {						// deallocate Y matrix
+		free( Y[r] );
+	} // for
+}
