Index: src/libcfa/fstream.c
===================================================================
--- src/libcfa/fstream.c	(revision 22854f8631ff59092624dcefc8874b238a0e4329)
+++ src/libcfa/fstream.c	(revision 0583064b51c8067d17ccf652042bb775c321d751)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar 22 16:17:21 2017
-// Update Count     : 221
+// Last Modified On : Thu Mar 23 08:20:41 2017
+// Update Count     : 226
 //
 
@@ -29,4 +29,13 @@
 #define IO_MSG "I/O error: "
 
+void ?{}( ofstream * this, void * file, _Bool sepDefault, _Bool sepOnOff, const char * separator, const char * tupleSeparator ) {
+	this->file = file;
+	this->sepDefault = sepDefault;
+	this->sepOnOff = sepOnOff;
+	sepSet( this, separator );
+	sepSetCur( this, sepGet( this ) );
+	sepSetTuple( this, tupleSeparator );
+}
+
 _Bool sepPrt( ofstream * os ) { return os->sepOnOff; }
 void sepOn( ofstream * os ) { os->sepOnOff = 1; }
@@ -83,7 +92,5 @@
 		exit( EXIT_FAILURE );
 	} // if
-	os->file = file;
-	sepOff( os );
-	sepSet( os, " " );
+	?{}( os, file, 1, 0, " ", ", " );
 } // open
 
@@ -125,13 +132,4 @@
 } // fmt
 
-void ?{}( ofstream * this, void * file, _Bool sepDefault, _Bool sepOnOff, const char * separator, const char * tupleSeparator ) {
-	this->file = file;
-	this->sepDefault = sepDefault;
-	this->sepOnOff = sepOnOff;
-	sepSet( this, separator );
-	sepSetCur( this, sepGet( this ) );
-	sepSetTuple( this, tupleSeparator );
-}
-
 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), 1, 0, " ", ", " };
 ofstream *sout = &soutFile;
Index: src/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision 22854f8631ff59092624dcefc8874b238a0e4329)
+++ src/libcfa/iostream.c	(revision 0583064b51c8067d17ccf652042bb775c321d751)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar 22 17:46:06 2017
-// Update Count     : 359
+// Last Modified On : Thu Mar 23 08:20:40 2017
+// Update Count     : 367
 //
 
@@ -201,11 +201,7 @@
 forall( dtype ostype, otype T, ttype Params | ostream( ostype ) | writeable( T ) | { ostype * ?|?( ostype *, Params ); } )
 ostype * ?|?( ostype * os, T arg, Params rest ) {
-	forall( ttype Params ) ostype * prtTuple( T arg, Params rest ) {
-		os | arg;										// print first argument
-		os | rest;										// print remaining arguments
-		return os;
-	} // prtTuple
 	sepSetCur( os, sepGetTuple( os ) );					// switch to tuple separator
-	prtTuple( arg, rest );								// recursively print tuple
+	os | arg;											// print first argument
+	os | rest;											// print remaining arguments
 	sepSetCur( os, sepGet( os ) );						// switch to regular separator
 	return os;
@@ -223,5 +219,5 @@
 	os | '\n';
 	flush( os );
-	sepOff( os );
+	sepOff( os );										// prepare for next line
 	return os;
 } // endl
