Index: libcfa/src/fstream.cfa
===================================================================
--- libcfa/src/fstream.cfa	(revision bd07b152a6715b32d07c252c73e95424bd236100)
+++ libcfa/src/fstream.cfa	(revision 9d362a0aa105cc54a0a3b9de3a600875b0ade8ae)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Dec 22 17:01:54 2018
-// Update Count     : 302
+// Last Modified On : Mon Dec 24 18:33:38 2018
+// Update Count     : 304
 //
 
@@ -150,5 +150,5 @@
 	va_end( args );
 
-	setPrt( os, true );
+	setPrt( os, true );									// called in output cascade
 	sepReset( os );										// reset separator
 	return len;
Index: libcfa/src/fstream.hfa
===================================================================
--- libcfa/src/fstream.hfa	(revision bd07b152a6715b32d07c252c73e95424bd236100)
+++ libcfa/src/fstream.hfa	(revision 9d362a0aa105cc54a0a3b9de3a600875b0ade8ae)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Dec 22 17:55:37 2018
-// Update Count     : 148
+// Last Modified On : Mon Dec 24 18:33:41 2018
+// Update Count     : 149
 //
 
@@ -62,5 +62,5 @@
 void close( ofstream & );
 ofstream & write( ofstream &, const char * data, size_t size );
-int fmt( ofstream &, const char fmt[], ... );
+int fmt( ofstream &, const char format[], ... );
 
 void ?{}( ofstream & os );
@@ -83,5 +83,5 @@
 ifstream & read( ifstream & is, char * data, size_t size );
 ifstream & ungetc( ifstream & is, char c );
-int fmt( ifstream &, const char fmt[], ... );
+int fmt( ifstream &, const char format[], ... );
 
 void ?{}( ifstream & is );
Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision bd07b152a6715b32d07c252c73e95424bd236100)
+++ libcfa/src/iostream.cfa	(revision 9d362a0aa105cc54a0a3b9de3a600875b0ade8ae)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Dec 22 23:09:56 2018
-// Update Count     : 569
+// Last Modified On : Mon Dec 24 18:33:40 2018
+// Update Count     : 589
 //
 
@@ -33,6 +33,5 @@
 	} // ?|?
 	void ?|?( ostype & os, bool b ) {
-		(ostype)(os | b); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | b); nl( os );
 	} // ?|?
 
@@ -43,6 +42,5 @@
 	} // ?|?
 	void ?|?( ostype & os, char c ) {
-		(ostype)(os | c); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | c); nl( os );
 	} // ?|?
 
@@ -53,6 +51,5 @@
 	} // ?|?
 	void ?|?( ostype & os, signed char sc ) {
-		(ostype)(os | sc); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | sc); nl( os );
 	} // ?|?
 
@@ -63,6 +60,5 @@
 	} // ?|?
 	void ?|?( ostype & os, unsigned char usc ) {
-		(ostype)(os | usc); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | usc); nl( os );
 	} // ?|?
 
@@ -73,6 +69,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, short int si ) {
-		(ostype)(os | si); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | si); nl( os );
 	} // ?|?
 
@@ -83,6 +78,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, unsigned short int usi ) {
-		(ostype)(os | usi); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | usi); nl( os );
 	} // ?|?
 
@@ -93,6 +87,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, int i ) {
-		(ostype)(os | i); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | i); nl( os );
 	} // ?|?
 
@@ -103,6 +96,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, unsigned int ui ) {
-		(ostype)(os | ui); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | ui); nl( os );
 	} // ?|?
 
@@ -113,6 +105,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, long int li ) {
-		(ostype)(os | li); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | li); nl( os );
 	} // ?|?
 
@@ -123,6 +114,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, unsigned long int uli ) {
-		(ostype)(os | uli); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | uli); nl( os );
 	} // ?|?
 
@@ -133,6 +123,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, long long int lli ) {
-		(ostype)(os | lli); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | lli); nl( os );
 	} // ?|?
 
@@ -143,6 +132,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, unsigned long long int ulli ) {
-		(ostype)(os | ulli); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | ulli); nl( os );
 	} // ?|?
 
@@ -153,6 +141,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, float f ) {
-		(ostype)(os | f); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | f); nl( os );
 	} // ?|?
 
@@ -163,6 +150,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, double d ) {
-		(ostype)(os | d); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | d); nl( os );
 	} // ?|?
 
@@ -173,6 +159,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, long double ld ) {
-		(ostype)(os | ld); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | ld); nl( os );
 	} // ?|?
 
@@ -183,6 +168,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, float _Complex fc ) {
-		(ostype)(os | fc); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | fc); nl( os );
 	} // ?|?
 
@@ -193,6 +177,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, double _Complex dc ) {
-		(ostype)(os | dc); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | dc); nl( os );
 	} // ?|?
 
@@ -203,6 +186,5 @@
 	} // ?|?
 	void & ?|?( ostype & os, long double _Complex ldc ) {
-		(ostype)(os | ldc); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | ldc); nl( os );
 	} // ?|?
 
@@ -246,6 +228,5 @@
 	} // ?|?
 	void ?|?( ostype & os, const char * str ) {
-		(ostype)(os | str); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | str); nl( os );
 	} // ?|?
 
@@ -276,21 +257,20 @@
 	} // ?|?
 	void ?|?( ostype & os, const void * p ) {
-		(ostype)(os | p); if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		(ostype &)(os | p); nl( os );
 	} // ?|?
 
 	// manipulators
 	ostype & ?|?( ostype & os, ostype & (* manip)( ostype & ) ) {
-		(ostype)(manip( os ));
+		(ostype &)(manip( os ));
 		return os;
 	} // ?|?
 	void ?|?( ostype & os, ostype & (* manip)( ostype & ) ) {
-		(ostype)(manip( os ));
-		if ( getANL( os ) && getPrt( os ) ) nl( os );	// ignore auto nl?
+		(ostype &)(manip( os ));
+		if ( getPrt( os ) ) nl( os );					// something printed ?
 		setPrt( os, false );							// turn off
 	} // ?|?
 
 	ostype & sep( ostype & os ) {
-		return (ostype)(os | sepGet( os ));
+		return (ostype &)(os | sepGet( os ));
 	} // sep
 
@@ -300,5 +280,5 @@
 
 	ostype & nl( ostype & os ) {
-		(ostype)(os | '\n');
+		(ostype &)(os | '\n');
 		setPrt( os, false );							// turn off
 		setNL( os, true );
@@ -307,4 +287,9 @@
 	} // nl
 
+	void nl( ostype & os ) {
+		if ( getANL( os ) ) (ostype &)(nl( os ));		// implementation only
+		else setPrt( os, false );						// turn off
+	} // nl
+
 	ostype & nonl( ostype & os ) {
 		setPrt( os, false );							// turn off
@@ -346,18 +331,17 @@
 forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } ) {
 	ostype & ?|?( ostype & os, T arg, Params rest ) {
-		(ostype)(os | arg);								// print first argument
+		(ostype &)(os | arg);							// print first argument
 		sepSetCur( os, sepGetTuple( os ) );				// switch to tuple separator
-		(ostype)(os | rest);							// print remaining arguments
+		(ostype &)(os | rest);							// print remaining arguments
 		sepSetCur( os, sepGet( os ) );					// switch to regular separator
 		return os;
 	} // ?|?
 	void ?|?( ostype & os, T arg, Params rest ) {
-//		(ostype)(?|?( os, arg, rest )); if ( getANL( os ) ) nl( os );
-		(ostype)(os | arg);								// print first argument
+		// (ostype &)(?|?( os, arg, rest )); nl( os );
+		(ostype &)(os | arg);							// print first argument
 		sepSetCur( os, sepGetTuple( os ) );				// switch to tuple separator
-		(ostype)(os | rest);							// print remaining arguments
+		(ostype &)(os | rest);							// print remaining arguments
 		sepSetCur( os, sepGet( os ) );					// switch to regular separator
-		if ( getANL( os ) ) nl( os );
-		setPrt( os, false );							// turn off
+		nl( os );
 	} // ?|?
 } // distribution
Index: libcfa/src/iostream.hfa
===================================================================
--- libcfa/src/iostream.hfa	(revision bd07b152a6715b32d07c252c73e95424bd236100)
+++ libcfa/src/iostream.hfa	(revision 9d362a0aa105cc54a0a3b9de3a600875b0ade8ae)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Dec 22 17:00:39 2018
-// Update Count     : 218
+// Last Modified On : Mon Dec 24 18:33:40 2018
+// Update Count     : 220
 //
 
@@ -20,5 +20,5 @@
 trait ostream( dtype ostype ) {
 	// private
-	bool sepPrt( ostype & );							// return separator state (on/off)
+	bool sepPrt( ostype & );							// get separator state (on/off)
 	void sepReset( ostype & );							// set separator state to default state
 	void sepReset( ostype &, bool );					// set separator and default state
@@ -27,7 +27,7 @@
 	bool getNL( ostype & );								// check newline
 	void setNL( ostype &, bool );						// saw newline
-	bool getANL( ostype & );							// check auto newline
-	bool getPrt( ostype & );							// check ignore auto NL
-	void setPrt( ostype &, bool );						// set ignore auto NL
+	bool getANL( ostype & );							// get auto newline (on/off)
+	bool getPrt( ostype & );							// get fmt called in output cascade
+	void setPrt( ostype &, bool );						// set fmt called in output cascade
 	// public
 	void sepOn( ostype & );								// turn separator state on
@@ -48,5 +48,5 @@
 	void close( ostype & os );
 	ostype & write( ostype &, const char *, size_t );
-	int fmt( ostype &, const char fmt[], ... );
+	int fmt( ostype &, const char format[], ... );
 }; // ostream
 
@@ -117,4 +117,5 @@
 	void ?|?( ostype &, ostype & (*)( ostype & ) );
 	ostype & nl( ostype & );
+	void nl( ostype & );
 	ostype & nonl( ostype & );
 	ostype & sep( ostype & );
@@ -149,5 +150,5 @@
 	istype & read( istype &, char *, size_t );
 	istype & ungetc( istype &, char );
-	int fmt( istype &, const char fmt[], ... );
+	int fmt( istype &, const char format[], ... );
 }; // istream
 
