Index: libcfa/src/collections/array.hfa
===================================================================
--- libcfa/src/collections/array.hfa	(revision 4223317e3e759f006fdf485a8ab0ebb78ef3c267)
+++ libcfa/src/collections/array.hfa	(revision 9aa8dcc0640d70d933086684559c5b60f6eb7289)
@@ -137,5 +137,5 @@
 	}
 
-	static inline size_t ?`len( arpk( N, S, Timmed, Tbase ) & ) {
+	static inline size_t len( arpk( N, S, Timmed, Tbase ) & ) {
 		return N;
 	}
@@ -282,11 +282,11 @@
 
 // desired:
-// forall(A &, Tv &, [N])
+// forall( A &, Tv &, [N] )
 // trait ar {
-//	 Tv& ?[?]( A&, zero_t );
-//	 Tv& ?[?]( A&, one_t  );
-//	 Tv& ?[?]( A&, int	);
+//	 Tv& ?[?]( A &, zero_t );
+//	 Tv& ?[?]( A &, one_t  );
+//	 Tv& ?[?]( A &, int	);
 //				   ...
-//	 size_t ?`len( A& );
+//	 size_t len( A & );
 //	 void __taglen( tag(C), tag(N) );
 // };
@@ -295,11 +295,11 @@
 
 #define ar( A, Tv, N ) {				\
-	Tv& ?[?]( A&, zero_t );				\
-	Tv& ?[?]( A&, one_t );				\
-	Tv& ?[?]( A&, int );				\
-	Tv& ?[?]( A&, unsigned int );		\
-	Tv& ?[?]( A&, long int );			\
-	Tv& ?[?]( A&, unsigned long int );	\
-	size_t ?`len( A& );					\
+	Tv& ?[?]( A &, zero_t );			\
+	Tv& ?[?]( A &, one_t );				\
+	Tv& ?[?]( A &, int );				\
+	Tv& ?[?]( A &, unsigned int );		\
+	Tv& ?[?]( A &, long int );			\
+	Tv& ?[?]( A &, unsigned long int );	\
+	size_t len( A & );					\
 	void __taglen( tag(A), tag(N) );	\
 }
Index: libcfa/src/collections/string.cfa
===================================================================
--- libcfa/src/collections/string.cfa	(revision 4223317e3e759f006fdf485a8ab0ebb78ef3c267)
+++ libcfa/src/collections/string.cfa	(revision 9aa8dcc0640d70d933086684559c5b60f6eb7289)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr  1 09:17:34 2025
-// Update Count     : 288
+// Last Modified On : Wed Apr  2 14:12:35 2025
+// Update Count     : 295
 //
 
@@ -223,8 +223,8 @@
 
 ofstream & ?|?( ofstream & os, _Ostream_Manip(string) f ) {
-	size_t len = size( f.val );
-	char cstr[len + 1];									// room for null terminator
-	for ( i; len ) cstr[i] = f.val[i];					// copy string
-	cstr[len] = '\0';									// terminate
+	size_t l = len( f.val );
+	char cstr[l + 1];									// room for null terminator
+	for ( i; l ) cstr[i] = f.val[i];					// copy string
+	cstr[l] = '\0';										// terminate
 	_Ostream_Manip(const char *) cf @= { cstr, f.wd, f.pc, f.base, {f.all} };
 	return os | cf | nonl;
@@ -254,8 +254,8 @@
 
 string ?()( string & s, ssize_t start, ssize_t len ) {
-	if ( start < 0 ) { start += s`len; }
+	if ( start < 0 ) { start += len( s ); }
 	if ( len < 0 ) { len = -len; start -= len; }
-	if ( start > s`len ) return (string){ "" };
-	if ( start + len > s`len ) len = s`len - start;
+	if ( start > len( s ) ) return (string){ "" };
+	if ( start + len > len( s ) ) len = len( s ) - start;
 	string ret = { *s.inner, start, len };
 	return ret`share;
@@ -263,6 +263,6 @@
 
 string ?()( string & s, ssize_t start ) {
-	if ( start < 0 ) { start += s`len; }
-	string ret = { *s.inner, start, size( s ) - start };
+	if ( start < 0 ) { start += len( s ); }
+	string ret = { *s.inner, start, len( s ) - start };
 	return ret`share;
 }
@@ -299,6 +299,6 @@
 // Getter
 
-size_t size( const string & s ) {
-	return size( *s.inner );
+size_t len( const string & s ) {
+	return len( *s.inner );
 }
 
@@ -362,5 +362,5 @@
 }
 
-string ?+?( const char * s1, string & s2 ) {
+string ?+?( const char * s1, const string & s2 ) {
 	string ret = s1;
 	ret += s2;
@@ -371,4 +371,10 @@
 	string ret = s;
 	ret += c;
+	return ret;
+}
+
+string ?+?( char c1, char c2 ) {
+	string ret = c1;
+	ret += c2;
 	return ret;
 }
Index: libcfa/src/collections/string.hfa
===================================================================
--- libcfa/src/collections/string.hfa	(revision 4223317e3e759f006fdf485a8ab0ebb78ef3c267)
+++ libcfa/src/collections/string.hfa	(revision 9aa8dcc0640d70d933086684559c5b60f6eb7289)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr  1 09:16:39 2025
-// Update Count     : 155
+// Last Modified On : Wed Apr  2 23:09:11 2025
+// Update Count     : 161
 //
 
@@ -28,11 +28,7 @@
 
 // Getters
-//static size_t inline __attribute__((always_inline)) size( char c ) { return sizeof( c ); };	// base case
-//static size_t inline __attribute__((always_inline)) size( wchar_t wc ) { return sizeof( wc ); }; // base case
-static inline size_t size( const char * cs ) { return strlen( cs ); };
-static inline size_t ?`len( const char * cs ) { return size( cs ); };
-size_t size( const string & s );
-size_t ?`len( const string & s ) { return size( s ); }
-static inline size_t strlen( const string & s ) { return size( s ); }
+static inline size_t len( const char * cs ) { return strlen( cs ); };
+size_t len( const string & s );
+static inline size_t strlen( const string & s ) { return len( s ); }
 
 // RAII, assignment
@@ -169,6 +165,7 @@
 string ?+?( char c, const char * s );					// add a character to a copy of the string
 string ?+?( const char * c, const char * s );			// copy and add with two NULL-terminated string
-string ?+?( const char * c, string & s );				// copy and add with NULL-terminated string
+string ?+?( const char * c, const string & s );			// copy and add with NULL-terminated string
 string ?+?( const string & s, const char * c );			// copy and add with NULL-terminated string
+string ?+?( char c1, char c2 );							// add two characters
 
 static inline string & strcat( string & s, const string & s2 ) { s += s2; return s; }
Index: libcfa/src/collections/string_res.cfa
===================================================================
--- libcfa/src/collections/string_res.cfa	(revision 4223317e3e759f006fdf485a8ab0ebb78ef3c267)
+++ libcfa/src/collections/string_res.cfa	(revision 9aa8dcc0640d70d933086684559c5b60f6eb7289)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 14 15:45:24 2025
-// Update Count     : 88
+// Last Modified On : Tue Apr  1 23:29:58 2025
+// Update Count     : 91
 //
 
@@ -193,5 +193,5 @@
 
 // Returns the size of the string in bytes
-size_t size(const string_res & s) with(s) {
+size_t len(const string_res & s) with(s) {
 	return Handle.lnth;
 }
@@ -255,7 +255,7 @@
   fini: {
 		char rfmt[5] = { ' ', delimiters[0], '%', 'n', '\0' };
-		int len = -1;									// may not be set in fmt
-		args = fmt( is, rfmt, &len );					// remove leading whitespace and quote
-	  if ( eof( is ) || len == -1 ) break fini;
+		int l = -1;										// may not be set in fmt
+		args = fmt( is, rfmt, &l );						// remove leading whitespace and quote
+	  if ( eof( is ) || l == -1 ) break fini;
 
 		// Change the remainder of the read into a getline by reseting the closing delimiter.
@@ -353,37 +353,37 @@
 void ?{}( string_res & s, ssize_t rhs ) {
 	char buf[64];
-	int len;
-	snprintf( buf, sizeof(buf)-1, "%zd%n", rhs, &len );
-	( s ){ buf, len };
+	int l;
+	snprintf( buf, sizeof(buf)-1, "%zd%n", rhs, &l );
+	( s ){ buf, l };
 }
 void ?{}( string_res & s, size_t rhs ) {
 	char buf[64];
-	int len;
-	snprintf( buf, sizeof(buf)-1, "%zu%n", rhs, &len );
-	( s ){ buf, len };
+	int l;
+	snprintf( buf, sizeof(buf)-1, "%zu%n", rhs, &l );
+	( s ){ buf, l };
 }
 void ?{}( string_res & s, double rhs ) {
 	char buf[64];
-	int len;
-	snprintf( buf, sizeof(buf)-1, "%g%n", rhs, &len );
-	( s ){ buf, len };
+	int l;
+	snprintf( buf, sizeof(buf)-1, "%g%n", rhs, &l );
+	( s ){ buf, l };
 }
 void ?{}( string_res & s, long double rhs ) {
 	char buf[64];
-	int len;
-	snprintf( buf, sizeof(buf)-1, "%Lg%n", rhs, &len );
-	( s ){ buf, len };
+	int l;
+	snprintf( buf, sizeof(buf)-1, "%Lg%n", rhs, &l );
+	( s ){ buf, l };
 }
 void ?{}( string_res & s, double _Complex rhs ) {
 	char buf[64];
-	int len;
-	snprintf( buf, sizeof(buf)-1, "%g+%gi%n", creal( rhs ), cimag( rhs ), &len );
-	( s ){ buf, len };
+	int l;
+	snprintf( buf, sizeof(buf)-1, "%g+%gi%n", creal( rhs ), cimag( rhs ), &l );
+	( s ){ buf, l };
 }
 void ?{}( string_res & s, long double _Complex rhs ) {
 	char buf[64];
-	int len;
-	snprintf( buf, sizeof(buf)-1, "%Lg+%Lgi%n", creall( rhs ), cimagl( rhs ), &len );
-	( s ){ buf, len };
+	int l;
+	snprintf( buf, sizeof(buf)-1, "%Lg+%Lgi%n", creall( rhs ), cimagl( rhs ), &l );
+	( s ){ buf, l };
 }
 
@@ -794,5 +794,5 @@
 
 bool contains(const string_res & s, char ch) {
-	for ( i; size(s) ) {
+	for ( i; len(s) ) {
 		if (s[i] == ch) return true;
 	}
@@ -941,15 +941,15 @@
 
 int exclude(const string_res & s, const charclass_res & mask) {
-	for ( i; size(s) ) {
+	for ( i; len(s) ) {
 		if ( test(mask, s[i]) ) return i;
 	}
-	return size(s);
+	return len(s);
 }
 
 int include(const string_res & s, const charclass_res & mask) {
-	for ( i; size(s) ) {
+	for ( i; len(s) ) {
 		if ( ! test(mask, s[i]) ) return i;
 	}
-	return size(s);
+	return len(s);
 }
 
Index: libcfa/src/collections/string_res.hfa
===================================================================
--- libcfa/src/collections/string_res.hfa	(revision 4223317e3e759f006fdf485a8ab0ebb78ef3c267)
+++ libcfa/src/collections/string_res.hfa	(revision 9aa8dcc0640d70d933086684559c5b60f6eb7289)
@@ -10,6 +10,6 @@
 // Created On       : Fri Sep 03 11:00:00 2021
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 14 15:44:01 2025
-// Update Count     : 61
+// Last Modified On : Tue Apr  1 23:24:20 2025
+// Update Count     : 62
 //
 
@@ -70,5 +70,5 @@
 
 // Getters
-size_t size(const string_res & s);
+size_t len(const string_res & s);
 
 // Constructors, Assignment Operators, Destructor
@@ -89,8 +89,8 @@
 void ?{}(string_res & s, const string_res & src, StrResInitMode, size_t start, size_t len );
 static inline void ?{}(string_res & s, const string_res & src, StrResInitMode mode ) {
-    ?{}( s, src, mode, 0, size(src));
+    ?{}( s, src, mode, 0, len(src));
 }
 static inline void ?{}(string_res & s, const string_res & src, StrResInitMode mode, size_t maxlen ) {
-    ?{}( s, src, mode, 0, (size(src) > maxlen)?maxlen:size(src) );
+    ?{}( s, src, mode, 0, (len(src) > maxlen)?maxlen:len(src) );
 }
 void ?{}( string_res & s, ssize_t rhs );
