Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision 54565371c3b9261036f76efc5fd039c32cc8a5ae)
+++ libcfa/src/iostream.cfa	(revision ef3ac4640bb5bfd60cd87c0a0e50251de36432af)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Apr 24 10:03:54 2021
-// Update Count     : 1329
+// Last Modified On : Tue Apr 27 18:01:03 2021
+// Update Count     : 1330
 //
 
@@ -145,14 +145,14 @@
 	} // ?|?
 
-#if defined( __SIZEOF_INT128__ )
+	#if defined( __SIZEOF_INT128__ )
 	//      UINT64_MAX 18_446_744_073_709_551_615_ULL
 	#define P10_UINT64 10_000_000_000_000_000_000_ULL	// 19 zeroes
 
 	static inline void base10_128( ostype & os, unsigned int128 val ) {
-#if defined(__GNUC__) && __GNUC_PREREQ(7,0)				// gcc version >= 7
+		#if defined(__GNUC__) && __GNUC_PREREQ(7,0)		// gcc version >= 7
 		if ( val > P10_UINT64 ) {
-#else
+		#else
 		if ( (uint64_t)(val >> 64) != 0 || (uint64_t)val > P10_UINT64 ) { // patch gcc 5 & 6 -O3 bug
-#endif // __GNUC_PREREQ(7,0)
+		#endif // __GNUC_PREREQ(7,0)
 			base10_128( os, val / P10_UINT64 );			// recursive
 			fmt( os, "%.19lu", (uint64_t)(val % P10_UINT64) );
@@ -187,5 +187,5 @@
 		(ostype &)(os | ullli); ends( os );
 	} // ?|?
-#endif // __SIZEOF_INT128__
+	#endif // __SIZEOF_INT128__
 
 	#define PrintWithDP( os, format, val, ... ) \
@@ -361,5 +361,4 @@
 		setPrt$( os, false );							// turn off
 		setNL$( os, true );
-		flush( os );
 		return sepOff( os );							// prepare for next line
 	} // nl
@@ -808,5 +807,5 @@
 
 
-forall( istype & | istream( istype ) ) {
+forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, bool & b ) {
 		char val[6];
@@ -918,5 +917,5 @@
 	} // ?|?
 
-#if defined( __SIZEOF_INT128__ )
+	#if defined( __SIZEOF_INT128__ )
 	istype & ?|?( istype & is, int128 & llli ) {
 		return (istype &)(is | (unsigned int128 &)llli);
@@ -944,5 +943,5 @@
 		(istype &)(is | ullli); ends( is );
 	} // ?|?
-#endif // __SIZEOF_INT128__
+	#endif // __SIZEOF_INT128__
 
 	istype & ?|?( istype & is, float & f ) {
@@ -1035,5 +1034,7 @@
 		return is;
 	} // nlOff
-
+} // distribution
+
+forall( istype & | istream( istype ) ) {
 	istype & acquire( istype & is ) {
 		acquire( is );									// call void returning
@@ -1044,5 +1045,5 @@
 // *********************************** manipulators ***********************************
 
-forall( istype & | istream( istype ) ) {
+forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, _Istream_Cstr f ) {
 		// skip xxx
@@ -1092,5 +1093,5 @@
 
 #define InputFMTImpl( T, CODE ) \
-forall( istype & | istream( istype ) ) { \
+forall( istype & | basic_istream( istype ) ) { \
 	istype & ?|?( istype & is, _Istream_Manip(T) f ) { \
 		enum { size = 16 }; \
@@ -1125,5 +1126,5 @@
 InputFMTImpl( long double, "Lf" )
 
-forall( istype & | istream( istype ) ) {
+forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, _Istream_Manip(float _Complex) fc ) {
 		float re, im;
Index: libcfa/src/iostream.hfa
===================================================================
--- libcfa/src/iostream.hfa	(revision 54565371c3b9261036f76efc5fd039c32cc8a5ae)
+++ libcfa/src/iostream.hfa	(revision ef3ac4640bb5bfd60cd87c0a0e50251de36432af)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Apr 25 11:22:03 2021
-// Update Count     : 397
+// Last Modified On : Tue Apr 27 17:59:21 2021
+// Update Count     : 398
 //
 
@@ -49,8 +49,8 @@
 	void ends( ostype & );								// end of output statement
 	int fmt( ostype &, const char format[], ... ) __attribute__(( format(printf, 2, 3) ));
-	int flush( ostype & );
 }; // basic_ostream
 	
 trait ostream( ostype & | basic_ostream( ostype ) ) {
+	int flush( ostype & );
 	bool fail( ostype & );								// operation failed?
 	void open( ostype &, const char name[], const char mode[] );
@@ -97,10 +97,10 @@
 	ostype & ?|?( ostype &, unsigned long long int );
 	void ?|?( ostype &, unsigned long long int );
-#if defined( __SIZEOF_INT128__ )
+	#if defined( __SIZEOF_INT128__ )
 	ostype & ?|?( ostype &, int128 );
 	void ?|?( ostype &, int128 );
 	ostype & ?|?( ostype &, unsigned int128 );
 	void ?|?( ostype &, unsigned int128 );
-#endif // __SIZEOF_INT128__
+	#endif // __SIZEOF_INT128__
 
 	ostype & ?|?( ostype &, float );
@@ -121,7 +121,7 @@
 	void ?|?( ostype &, const char [] );
 	// ostype & ?|?( ostype &, const char16_t * );
-#if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
+	#if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
 	// ostype & ?|?( ostype &, const char32_t * );
-#endif // ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 )
+	#endif // ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 )
 	// ostype & ?|?( ostype &, const wchar_t * );
 	ostype & ?|?( ostype &, const void * );
@@ -294,18 +294,21 @@
 
 
-trait istream( istype & ) {
+trait basic_istream( istype & ) {
+	bool getANL( istype & );							// get scan newline (on/off)
 	void nlOn( istype & );								// read newline
 	void nlOff( istype & );								// scan newline
-	bool getANL( istype & );							// get scan newline (on/off)
 
 	void ends( istype & os );							// end of output statement
+	int fmt( istype &, const char format[], ... ) __attribute__(( format(scanf, 2, 3) ));
+	istype & ungetc( istype &, char );
+	int eof( istype & );
+}; // basic_istream
+
+trait istream( istype & | basic_istream( istype ) ) {
 	bool fail( istype & );
-	int eof( istype & );
 	void open( istype & is, const char name[] );
 	void close( istype & is );
 	istype & read( istype &, char *, size_t );
-	istype & ungetc( istype &, char );
-	int fmt( istype &, const char format[], ... ) __attribute__(( format(scanf, 2, 3) ));
-	void acquire( istype & );
+	void acquire( istype & );							// concurrent access
 }; // istream
 
@@ -314,5 +317,5 @@
 }; // readable
 
-forall( istype & | istream( istype ) ) {
+forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype &, bool & );
 	void ?|?( istype &, bool & );
@@ -341,10 +344,10 @@
 	istype & ?|?( istype &, unsigned long long int & );
 	void ?|?( istype &, unsigned long long int & );
-#if defined( __SIZEOF_INT128__ )
+	#if defined( __SIZEOF_INT128__ )
 	istype & ?|?( istype &, int128 & );
 	void ?|?( istype &, int128 & );
 	istype & ?|?( istype &, unsigned int128 & );
 	void ?|?( istype &, unsigned int128 & );
-#endif // __SIZEOF_INT128__
+	#endif // __SIZEOF_INT128__
 
 	istype & ?|?( istype &, float & );
@@ -372,4 +375,7 @@
 	istype & nlOn( istype & );
 	istype & nlOff( istype & );
+} // distribution
+
+forall( istype & | istream( istype ) ) {
 	istype & acquire( istype & );
 } // distribution
@@ -402,5 +408,5 @@
 	_Istream_Cstr & wdi( unsigned int w, _Istream_Cstr & fmt ) { fmt.wd = w; return fmt; }
 } // distribution
-forall( istype & | istream( istype ) ) {
+forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, _Istream_Cstr f );
 	void ?|?( istype & is, _Istream_Cstr f );
@@ -415,5 +421,5 @@
 	_Istream_Char & ignore( _Istream_Char & fmt ) { fmt.ignore = true; return fmt; }
 } // distribution
-forall( istype & | istream( istype ) ) {
+forall( istype & | basic_istream( istype ) ) {
 	istype & ?|?( istype & is, _Istream_Char f );
 	void ?|?( istype & is, _Istream_Char f );
@@ -434,5 +440,5 @@
 	_Istream_Manip(T) & wdi( unsigned int w, _Istream_Manip(T) & fmt ) { fmt.wd = w; return fmt; } \
 } /* distribution */ \
-forall( istype & | istream( istype ) ) { \
+forall( istype & | basic_istream( istype ) ) { \
 	istype & ?|?( istype & is, _Istream_Manip(T) f ); \
 	void ?|?( istype & is, _Istream_Manip(T) f ); \
