Index: libcfa/src/Exception.hfa
===================================================================
--- libcfa/src/Exception.hfa	(revision 6b228cae996cd2d4f04e346a69d2105045e50bfb)
+++ libcfa/src/Exception.hfa	(revision 77bc259656cfdb32b4198ee5ed2ec89eec5ec78b)
@@ -2,4 +2,6 @@
 
 // TEMPORARY
-#define ExceptionDecl( name, fields... ) exception name{ fields }; __attribute__(( cfa_linkonce )) vtable( name ) name ## _vt
-#define ExceptionInst( name, values... ) (name){ &name ## _vt, values }
+#define ExceptionDecl( name, fields... ) exception name{ fields }; \
+	__attribute__(( cfa_linkonce )) vtable( name ) name ## _vt
+#define ExceptionArgs( name, args... ) &name ## _vt, args
+#define ExceptionInst( name, args... ) (name){ ExceptionArgs( name, args ) }
Index: libcfa/src/fstream.cfa
===================================================================
--- libcfa/src/fstream.cfa	(revision 6b228cae996cd2d4f04e346a69d2105045e50bfb)
+++ libcfa/src/fstream.cfa	(revision 77bc259656cfdb32b4198ee5ed2ec89eec5ec78b)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  1 18:32:15 2024
-// Update Count     : 575
+// Last Modified On : Sun Feb 11 20:55:45 2024
+// Update Count     : 580
 //
 
@@ -321,6 +321,4 @@
 
 
-static vtable(open_failure) open_failure_vt;
-
 // exception I/O constructors
 void ?{}( open_failure & ex, ofstream & ostream ) with( ex ) {
@@ -337,6 +335,4 @@
 
 
-static vtable(close_failure) close_failure_vt;
-
 // exception I/O constructors
 void ?{}( close_failure & ex, ofstream & ostream ) with( ex ) {
@@ -353,6 +349,4 @@
 
 
-static vtable(write_failure) write_failure_vt;
-
 // exception I/O constructors
 void ?{}( write_failure & ex, ofstream & ostream ) with( ex ) {
@@ -369,6 +363,4 @@
 
 
-static vtable(read_failure) read_failure_vt;
-
 // exception I/O constructors
 void ?{}( read_failure & ex, ofstream & ostream ) with( ex ) {
Index: libcfa/src/fstream.hfa
===================================================================
--- libcfa/src/fstream.hfa	(revision 6b228cae996cd2d4f04e346a69d2105045e50bfb)
+++ libcfa/src/fstream.hfa	(revision 77bc259656cfdb32b4198ee5ed2ec89eec5ec78b)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Oct 18 20:30:12 2023
-// Update Count     : 261
+// Last Modified On : Sun Feb 11 20:35:00 2024
+// Update Count     : 274
 //
 
@@ -139,5 +139,5 @@
 
 
-exception open_failure {
+ExceptionDecl( open_failure,
 	union {
 		ofstream * ostream;
@@ -146,10 +146,10 @@
 	// TEMPORARY: need polymorphic exceptions
 	int tag;											// 1 => ostream; 0 => istream
-};
+);
 
 void ?{}( open_failure & this, ofstream & );
 void ?{}( open_failure & this, ifstream & );
 
-exception close_failure {
+ExceptionDecl( close_failure,
 	union {
 		ofstream * ostream;
@@ -158,10 +158,10 @@
 	// TEMPORARY: need polymorphic exceptions
 	int tag;											// 1 => ostream; 0 => istream
-};
+);
 
 void ?{}( close_failure & this, ofstream & );
 void ?{}( close_failure & this, ifstream & );
 
-exception write_failure {
+ExceptionDecl( write_failure,
 	union {
 		ofstream * ostream;
@@ -170,10 +170,10 @@
 	// TEMPORARY: need polymorphic exceptions
 	int tag;											// 1 => ostream; 0 => istream
-};
+);
 
 void ?{}( write_failure & this, ofstream & );
 void ?{}( write_failure & this, ifstream & );
 
-exception read_failure {
+ExceptionDecl( read_failure,
 	union {
 		ofstream * ostream;
@@ -182,5 +182,5 @@
 	// TEMPORARY: need polymorphic exceptions
 	int tag;											// 1 => ostream; 0 => istream
-};
+);
 
 void ?{}( read_failure & this, ofstream & );
Index: tests/exceptions/pingpong_nonlocal.cfa
===================================================================
--- tests/exceptions/pingpong_nonlocal.cfa	(revision 6b228cae996cd2d4f04e346a69d2105045e50bfb)
+++ tests/exceptions/pingpong_nonlocal.cfa	(revision 77bc259656cfdb32b4198ee5ed2ec89eec5ec78b)
@@ -2,7 +2,7 @@
 #include <thread.hfa>
 #include <mutex_stmt.hfa>
+#include <Exception.hfa>
 
-exception num_ping_pongs { int num; };
-vtable(num_ping_pongs) num_ping_pongs_vt;
+ExceptionDecl( num_ping_pongs, int num; );
 
 thread Ping_Pong {
@@ -16,5 +16,5 @@
 	this.name = name;
 	cnt = 0;
-	?{}( except, &num_ping_pongs_vt, 0 );
+	?{}( except, ExceptionArgs( num_ping_pongs, 0 ) );
 }
 
@@ -29,5 +29,5 @@
 		for () {
 			while( ! poll( this ) ) { yield(); }
-            inc_resume_at( cnt );
+			inc_resume_at( cnt );
 		}
 	} catchResume( num_ping_pongs * e; e->num < numtimes ) {
@@ -37,5 +37,5 @@
 		mutex( sout ) sout | name | "catch" | cnt | e->num;
 		if ( e->num == numtimes ) {
-            inc_resume_at( e->num );
+			inc_resume_at( e->num );
 		}
 	}
@@ -49,6 +49,5 @@
 		&ping.partner = &pong;							// create cycle
 		&pong.partner = &ping;
-		num_ping_pongs except{ &num_ping_pongs_vt, 0 };
-		resumeAt( pong, except );
+		resumeAt( pong, ExceptionInst( num_ping_pongs, 0 ) );
 	}
 	sout | "main end";
