Index: libcfa/src/collections/string.cfa
===================================================================
--- libcfa/src/collections/string.cfa	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ libcfa/src/collections/string.cfa	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr 11 08:31:21 2025
-// Update Count     : 369
+// Last Modified On : Fri Apr 11 18:18:07 2025
+// Update Count     : 370
 //
 
@@ -234,6 +234,6 @@
 	}
 
-	istype & ?|?( istype & is, _Istream_Squoted f ) {
-		_Istream_Rquoted f2 = { { f.sstr.s.inner, (_Istream_str_base)f.sstr } };
+	istype & ?|?( istype & is, _Istream_Squote f ) {
+		_Istream_Rquote f2 = { { f.sstr.s.inner, (_Istream_str_base)f.sstr } };
 		return is | f2;
 	} // ?|?
Index: libcfa/src/collections/string.hfa
===================================================================
--- libcfa/src/collections/string.hfa	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ libcfa/src/collections/string.hfa	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr 11 08:28:27 2025
-// Update Count     : 260
+// Last Modified On : Fri Apr 11 18:13:35 2025
+// Update Count     : 261
 //
 
@@ -111,7 +111,7 @@
 }; // _Istream_Swidth
 
-struct _Istream_Squoted {
+struct _Istream_Squote {
 	_Istream_Swidth sstr;
-}; // _Istream_Squoted
+}; // _Istream_Squote
 
 struct _Istream_Sstr {
@@ -131,10 +131,10 @@
 		f.delimiters[0] = delimiter; f.delimiters[1] = '\0'; f.flags.delimiter = true; return (_Istream_Sstr &)f;
 	}
-	_Istream_Squoted quoted( string & s, const char Ldelimiter = '\"', const char Rdelimiter = '\0' ) {
-		return (_Istream_Squoted)@{ { .s = s, { {.delimiters = { Ldelimiter, Rdelimiter, '\0' }}, .wd = -1, {.flags.rwd = true} } } };
+	_Istream_Squote quote( string & s, const char Ldelimiter = '\"', const char Rdelimiter = '\0' ) {
+		return (_Istream_Squote)@{ { .s = s, { {.delimiters = { Ldelimiter, Rdelimiter, '\0' }}, .wd = -1, {.flags.rwd = true} } } };
 	}
-	_Istream_Squoted & quoted( _Istream_Swidth & f, const char Ldelimiter = '"', const char Rdelimiter = '\0' ) {
+	_Istream_Squote & quote( _Istream_Swidth & f, const char Ldelimiter = '"', const char Rdelimiter = '\0' ) {
 		f.delimiters[0] = Ldelimiter;  f.delimiters[1] = Rdelimiter;  f.delimiters[2] = '\0';
-		return (_Istream_Squoted &)f;
+		return (_Istream_Squote &)f;
 	}
 //	_Istream_Sstr incl( const char scanset[], string & s ) { return (_Istream_Sstr)@{ { .s = s, { {.scanset = scanset}, .wd = -1, {.flags.inex = false} } } }; }
@@ -147,5 +147,5 @@
 	_Istream_Sstr ignore( string & s ) { return (_Istream_Sstr)@{ .s = s, { {.scanset = 0p}, .wd = -1, {.flags.ignore = true} } }; }
 	_Istream_Sstr & ignore( _Istream_Swidth & f ) { f.flags.ignore = true; return (_Istream_Sstr &)f; }
-	_Istream_Squoted & ignore( _Istream_Squoted & f ) { f.sstr.flags.ignore = true; return (_Istream_Squoted &)f; }
+	_Istream_Squote & ignore( _Istream_Squote & f ) { f.sstr.flags.ignore = true; return (_Istream_Squote &)f; }
 //	_Istream_Sstr & ignore( _Istream_Sstr & f ) { f.sstr.flags.ignore = true; return (_Istream_Sstr &)f; }
 	_Istream_Sstr & ignore( _Istream_Sstr & f ) { f.flags.ignore = true; return (_Istream_Sstr &)f; }
@@ -153,5 +153,5 @@
 
 forall( istype & | basic_istream( istype ) ) {
-	istype & ?|?( istype & is, _Istream_Squoted f );
+	istype & ?|?( istype & is, _Istream_Squote f );
 	istype & ?|?( istype & is, _Istream_Sstr f );
 	static inline istype & ?|?( istype & is, _Istream_Swidth f ) { return is | *(_Istream_Sstr *)&f; }
Index: libcfa/src/collections/string_res.cfa
===================================================================
--- libcfa/src/collections/string_res.cfa	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ libcfa/src/collections/string_res.cfa	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr  9 08:44:17 2025
-// Update Count     : 128
+// Last Modified On : Fri Apr 11 18:18:42 2025
+// Update Count     : 129
 //
 
@@ -249,5 +249,5 @@
 
 forall( istype & | basic_istream( istype ) )
-istype & ?|?( istype & is, _Istream_Rquoted f ) with( f.rstr ) {
+istype & ?|?( istype & is, _Istream_Rquote f ) with( f.rstr ) {
 	if ( eof( is ) ) throwResume ExceptionInst( end_of_file );
 	int args;
Index: libcfa/src/collections/string_res.hfa
===================================================================
--- libcfa/src/collections/string_res.hfa	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ libcfa/src/collections/string_res.hfa	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr  9 15:16:29 2025
-// Update Count     : 76
+// Last Modified On : Fri Apr 11 18:11:05 2025
+// Update Count     : 77
 //
 
@@ -132,9 +132,9 @@
 }; // _Istream_Rwidth
 
-struct _Istream_Rquoted {
+struct _Istream_Rquote {
 	// string_res * s;
 	// inline _Istream_str_base;
 	_Istream_Rwidth rstr;
-}; // _Istream_Rquoted
+}; // _Istream_Rquote
 
 struct _Istream_Rstr {
@@ -154,10 +154,10 @@
 		f.delimiters[0] = delimiter; f.delimiters[1] = '\0'; f.flags.delimiter = true; return (_Istream_Rstr &)f;
 	}
-	_Istream_Rquoted quoted( string_res & s, const char Ldelimiter = '\"', const char Rdelimiter = '\0' ) {
-		return (_Istream_Rquoted)@{ { .s = &s, { {.delimiters = { Ldelimiter, Rdelimiter, '\0' }}, .wd = -1, {.flags.rwd = true} } } };
-	}
-	_Istream_Rquoted & quoted( _Istream_Rwidth & f, const char Ldelimiter = '"', const char Rdelimiter = '\0' ) {
+	_Istream_Rquote quote( string_res & s, const char Ldelimiter = '\"', const char Rdelimiter = '\0' ) {
+		return (_Istream_Rquote)@{ { .s = &s, { {.delimiters = { Ldelimiter, Rdelimiter, '\0' }}, .wd = -1, {.flags.rwd = true} } } };
+	}
+	_Istream_Rquote & quote( _Istream_Rwidth & f, const char Ldelimiter = '"', const char Rdelimiter = '\0' ) {
 		f.delimiters[0] = Ldelimiter;  f.delimiters[1] = Rdelimiter;  f.delimiters[2] = '\0';
-		return (_Istream_Rquoted &)f;
+		return (_Istream_Rquote &)f;
 	}
 	_Istream_Rstr incl( const char scanset[], string_res & s ) { return (_Istream_Rstr)@{ .s = &s, { {.scanset = scanset}, .wd = -1, {.flags.inex = false} } }; }
@@ -167,9 +167,9 @@
 	_Istream_Rstr ignore( string_res & s ) { return (_Istream_Rstr)@{ .s = &s, { {.scanset = 0p}, .wd = -1, {.flags.ignore = true} } }; }
 	_Istream_Rstr & ignore( _Istream_Rwidth & f ) { f.flags.ignore = true; return (_Istream_Rstr &)f; }
-	_Istream_Rquoted & ignore( _Istream_Rquoted & f ) { f.rstr.flags.ignore = true; return (_Istream_Rquoted &)f; }
+	_Istream_Rquote & ignore( _Istream_Rquote & f ) { f.rstr.flags.ignore = true; return (_Istream_Rquote &)f; }
 	_Istream_Rstr & ignore( _Istream_Rstr & f ) { f.flags.ignore = true; return (_Istream_Rstr &)f; }
 } // distribution
 forall( istype & | basic_istream( istype ) ) {
-	istype & ?|?( istype & is, _Istream_Rquoted f );
+	istype & ?|?( istype & is, _Istream_Rquote f );
 	istype & ?|?( istype & is, _Istream_Rstr f );
 	static inline istype & ?|?( istype & is, _Istream_Rwidth f ) { return is | *(_Istream_Rstr *)&f; }
Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ libcfa/src/exception.c	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -10,6 +10,6 @@
 // Created On       : Mon Jun 26 15:13:00 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 10 16:45:22 2023
-// Update Count     : 69
+// Last Modified On : Wed Sep 25 17:23:49 2024
+// Update Count     : 74
 //
 
@@ -27,4 +27,5 @@
 #include "stdhdr/assert.h"
 #include "virtual.h"
+#include <unistd.h>										// write
 
 extern void __cabi_abort( const char fmt[], ... );
@@ -124,4 +125,5 @@
 	case _URC_FATAL_PHASE2_ERROR:
 	default:
+		write( 2, "abort1\n", 7 );
 		abort();
 	}
@@ -138,4 +140,5 @@
 	if ( ! store ) {
 		// Failure: cannot allocate exception. Terminate thread.
+		write( 2, "abort2\n", 7 );
 		abort(); // <- Although I think it might be the process.
 	}
@@ -200,5 +203,5 @@
 		__cabi_abort(
 			"Propagation failed to find a matching handler.\n"
-			"Possible cause is a missing try block with appropriate catch clause for specified exception type.\n"
+			"Possible cause is a missing try block with appropriate catch clause for the specified or derived exception type.\n"
 			"Last exception name or message: %s.\n",
 			NODE_TO_EXCEPT( UNWIND_TO_NODE( unwind_exception ) )->
@@ -225,4 +228,5 @@
 	ret = __cfaehm_cancellation_unwind( &node->unwind_exception );
 	printf("UNWIND ERROR %d after force unwind\n", ret);
+	write( 2, "abort3\n", 7 );
 	abort();
 }
@@ -246,4 +250,5 @@
 	if ( NULL == context->current_exception ) {
 		printf("UNWIND ERROR missing exception in begin unwind\n");
+		write( 2, "abort4\n", 7 );
 		abort();
 	}
@@ -271,4 +276,5 @@
 #endif
 		printf("UNWIND ERROR %d after raise exception\n", ret);
+		write( 2, "abort5\n", 7 );
 		abort();
 	}
@@ -292,4 +298,5 @@
 	// TODO: Print some error message.
 	(void)except;
+	write( 2, "abort6\n", 7 );
 	abort();
 }
@@ -299,4 +306,5 @@
 
 	__cfaehm_begin_unwind( __cfaehm_rethrow_adapter );
+	write( 2, "abort7\n", 7 );
 	abort();
 }
Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ libcfa/src/iostream.cfa	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Jan 22 07:31:19 2025
-// Update Count     : 2079
+// Last Modified On : Fri Apr 11 18:19:09 2025
+// Update Count     : 2080
 //
 
@@ -1006,5 +1006,5 @@
 	}
 
-	istype & ?|?( istype & is, _Istream_Cquoted f ) with( f.cstr ) {
+	istype & ?|?( istype & is, _Istream_Cquote f ) with( f.cstr ) {
 		if ( eof( is ) ) throwResume ExceptionInst( end_of_file );
 		int args;
@@ -1083,5 +1083,5 @@
 			if ( flags.delimiter ) {					// getline
 				int len = 0;							// may not be set in fmt
-				if ( delimiters[2] != '\0' ) {			// (quoted) read single character ?
+				if ( delimiters[2] != '\0' ) {			// (quote) read single character ?
 					sprintf( &fmtstr[pos], "c%%n" );
 				} else {
Index: libcfa/src/iostream.hfa
===================================================================
--- libcfa/src/iostream.hfa	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ libcfa/src/iostream.hfa	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Oct 13 10:49:40 2024
-// Update Count     : 765
+// Last Modified On : Fri Apr 11 18:11:25 2025
+// Update Count     : 766
 //
 
@@ -420,7 +420,7 @@
 // Restrict nesting of input manipulators to those combinations that make sense.
 
-struct _Istream_Cquoted {
+struct _Istream_Cquote {
 	_Istream_Cwidth cstr;
-}; // _Istream_Cquoted
+}; // _Istream_Cquote
 
 struct _Istream_Cstr {
@@ -441,10 +441,10 @@
 		f.delimiters[0] = delimiter; f.delimiters[1] = '\0'; f.flags.delimiter = true; return (_Istream_Cstr &)f;
 	}
-	_Istream_Cquoted quoted( char & ch, const char Ldelimiter = '\'', const char Rdelimiter = '\0' ) {
-		return (_Istream_Cquoted)@{ { .s = &ch, { {.delimiters = { Ldelimiter, Rdelimiter, '\1' }}, .wd = 1, {.flags.rwd = true} } } };
+	_Istream_Cquote quote( char & ch, const char Ldelimiter = '\'', const char Rdelimiter = '\0' ) {
+		return (_Istream_Cquote)@{ { .s = &ch, { {.delimiters = { Ldelimiter, Rdelimiter, '\1' }}, .wd = 1, {.flags.rwd = true} } } };
 	}
-	_Istream_Cquoted & quoted( _Istream_Cwidth & f, const char Ldelimiter = '"', const char Rdelimiter = '\0' ) {
+	_Istream_Cquote & quote( _Istream_Cwidth & f, const char Ldelimiter = '"', const char Rdelimiter = '\0' ) {
 		f.delimiters[0] = Ldelimiter;  f.delimiters[1] = Rdelimiter;  f.delimiters[2] = '\0';
-		return (_Istream_Cquoted &)f;
+		return (_Istream_Cquote &)f;
 	}
 	_Istream_Cstr & incl( const char scanset[], _Istream_Cwidth & f ) { f.scanset = scanset; f.flags.inex = false; return (_Istream_Cstr &)f; }
@@ -452,5 +452,5 @@
 	_Istream_Cstr ignore( const char s[] ) { return (_Istream_Cstr)@{ { .s = (char *)s, { {.scanset = 0p}, .wd = -1, {.flags.ignore = true} } } }; }
 	_Istream_Cstr & ignore( _Istream_Cwidth & f ) { f.flags.ignore = true; return (_Istream_Cstr &)f; }
-	_Istream_Cquoted & ignore( _Istream_Cquoted & f ) { f.cstr.flags.ignore = true; return (_Istream_Cquoted &)f; }
+	_Istream_Cquote & ignore( _Istream_Cquote & f ) { f.cstr.flags.ignore = true; return (_Istream_Cquote &)f; }
 	_Istream_Cstr & ignore( _Istream_Cstr & f ) { f.cstr.flags.ignore = true; return (_Istream_Cstr &)f; }
 } // distribution
@@ -458,5 +458,5 @@
 forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, _Istream_Cskip f );
-	istype & ?|?( istype & is, _Istream_Cquoted f );
+	istype & ?|?( istype & is, _Istream_Cquote f );
 	istype & ?|?( istype & is, _Istream_Cstr f );
 	static inline istype & ?|?( istype & is, _Istream_Cwidth f ) { return is | *(_Istream_Cstr *)&f; }
Index: tests/collections/string-istream-manip.cfa
===================================================================
--- tests/collections/string-istream-manip.cfa	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ tests/collections/string-istream-manip.cfa	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -176,9 +176,9 @@
 		sin | ignore( getline( s, '%' ) ) | nl;			sout | "18" | s;
 
-		sin | quoted( s );								sout | "19" | s;
-		sin | quoted( s, '\'' );						sout | "20" | s;
-		sin | quoted( s, '{', '}' );					sout | "21" | s;
-		sin | quoted( s, 'X', 'Y' );					sout | "22" | s;
-		sin | ignore( quoted( s, 'X', 'Y' ) );			sout | "23" | s;
+		sin | quote( s );								sout | "19" | s;
+		sin | quote( s, '\'' );							sout | "20" | s;
+		sin | quote( s, '{', '}' );						sout | "21" | s;
+		sin | quote( s, 'X', 'Y' );						sout | "22" | s;
+		sin | ignore( quote( s, 'X', 'Y' ) );			sout | "23" | s;
 		sin | nl;
 	}
@@ -213,9 +213,9 @@
 		sin | ignore( getline( s, '%' ) ) | nl;			sout | "18" | s;
 
-		sin | quoted( s );								sout | "19" | s;
-		sin | quoted( s, '\'' );						sout | "20" | s;
-		sin | quoted( s, '{', '}' );					sout | "21" | s;
-		sin | quoted( s, 'X', 'Y' );					sout | "22" | s;
-		sin | ignore( quoted( s, 'X', 'Y' ) );			sout | "23" | s;
+		sin | quote( s );								sout | "19" | s;
+		sin | quote( s, '\'' );							sout | "20" | s;
+		sin | quote( s, '{', '}' );						sout | "21" | s;
+		sin | quote( s, 'X', 'Y' );						sout | "22" | s;
+		sin | ignore( quote( s, 'X', 'Y' ) );			sout | "23" | s;
 	}
 }
Index: tests/io/manipulatorsInput.cfa
===================================================================
--- tests/io/manipulatorsInput.cfa	(revision a800a19a7844710a07f5162dadf9ee50140df9b9)
+++ tests/io/manipulatorsInput.cfa	(revision 30548de557fe51569fd989d9a2f6f14e66179173)
@@ -7,6 +7,6 @@
 // Created On       : Sat Jun  8 17:58:54 2019
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb  5 21:54:49 2024
-// Update Count     : 134
+// Last Modified On : Fri Apr 11 18:12:25 2025
+// Update Count     : 135
 // 
 
@@ -136,16 +136,16 @@
 		sin | ignore( getline( wdi( sizeof(s), s ), '%' ) ) | nl; sout | "18" | s;
 
-		sin | quoted( wdi( sizeof(s), s ) );			sout | "19" | s;
-		sin | quoted( wdi( sizeof(s), s ), '\'' );		sout | "20" | s;
-		sin | quoted( wdi( sizeof(s), s ), '{', '}' );	sout | "21" | s;
-		sin | quoted( wdi( sizeof(s), s ), 'X', 'Y' );	sout | "22" | s;
-		sin | ignore( quoted( wdi( sizeof(s), s ), 'X', 'Y' ) ); sout | "23" | s;
+		sin | quote( wdi( sizeof(s), s ) );				sout | "19" | s;
+		sin | quote( wdi( sizeof(s), s ), '\'' );		sout | "20" | s;
+		sin | quote( wdi( sizeof(s), s ), '{', '}' );	sout | "21" | s;
+		sin | quote( wdi( sizeof(s), s ), 'X', 'Y' );	sout | "22" | s;
+		sin | ignore( quote( wdi( sizeof(s), s ), 'X', 'Y' ) ); sout | "23" | s;
 
 		char ch;
-		sin | quoted( ch );								sout | "24 " | ch;
-		sin | quoted( ch, '\"' );						sout | "25 " | ch;
-		sin | quoted( ch, '{', '}' );					sout | "26 " | ch;
-		sin | quoted( ch, 'X', 'Y' );					sout | "27 " | ch;
-		sin | ignore( quoted( ch, 'X', 'Y' ) );			sout | "28 " | ch;
+		sin | quote( ch );								sout | "24 " | ch;
+		sin | quote( ch, '\"' );						sout | "25 " | ch;
+		sin | quote( ch, '{', '}' );					sout | "26 " | ch;
+		sin | quote( ch, 'X', 'Y' );					sout | "27 " | ch;
+		sin | ignore( quote( ch, 'X', 'Y' ) );			sout | "28 " | ch;
 		sin | nl;
 	}
