Index: src/libcfa/iostream
===================================================================
--- src/libcfa/iostream	(revision cb811ac113953880ed3864498f0a4d0b46e2be48)
+++ src/libcfa/iostream	(revision 7bc4e6bfac3fb788dc7964c508880c9d8c802484)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug  9 16:42:47 2017
-// Update Count     : 131
+// Last Modified On : Thu Aug 24 08:14:29 2017
+// Update Count     : 133
 //
 
@@ -117,22 +117,22 @@
 }; // readable
 
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char & );
 
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, short int * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned short int * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, int * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned int * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long int * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long long int * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long int * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long long int * );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, short int & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned short int & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, int & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned int & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long int & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long long int & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long int & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long long int & );
 
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double * );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double & );
 
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float _Complex * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double _Complex * );
-forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double _Complex * );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float _Complex & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double _Complex & );
+forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double _Complex & );
 
 struct _Istream_cstrUC { char * s; };
Index: src/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision cb811ac113953880ed3864498f0a4d0b46e2be48)
+++ src/libcfa/iostream.c	(revision 7bc4e6bfac3fb788dc7964c508880c9d8c802484)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug  9 16:46:51 2017
-// Update Count     : 401
+// Last Modified On : Thu Aug 24 08:41:53 2017
+// Update Count     : 405
 //
 
@@ -271,98 +271,98 @@
 
 forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, char * c ) {
-	fmt( is, "%c", c );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, short int * si ) {
-	fmt( is, "%hd", si );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, unsigned short int * usi ) {
-	fmt( is, "%hu", usi );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, int * i ) {
-	fmt( is, "%d", i );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, unsigned int * ui ) {
-	fmt( is, "%u", ui );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, long int * li ) {
-	fmt( is, "%ld", li );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, unsigned long int * ulli ) {
-	fmt( is, "%lu", ulli );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, long long int * lli ) {
-	fmt( is, "%lld", lli );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, unsigned long long int * ulli ) {
-	fmt( is, "%llu", ulli );
-	return is;
-} // ?|?
-
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, float * f ) {
-	fmt( is, "%f", f );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, double * d ) {
-	fmt( is, "%lf", d );
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, long double * ld ) {
-	fmt( is, "%Lf", ld );
-	return is;
-} // ?|?
-
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, float _Complex * fc ) {
+istype * ?|?( istype * is, char & c ) {
+	fmt( is, "%c", &c );								// must pass pointer through varg to fmt
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, short int & si ) {
+	fmt( is, "%hd", &si );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, unsigned short int & usi ) {
+	fmt( is, "%hu", &usi );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, int & i ) {
+	fmt( is, "%d", &i );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, unsigned int & ui ) {
+	fmt( is, "%u", &ui );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, long int & li ) {
+	fmt( is, "%ld", &li );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, unsigned long int & ulli ) {
+	fmt( is, "%lu", &ulli );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, long long int & lli ) {
+	fmt( is, "%lld", &lli );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, unsigned long long int & ulli ) {
+	fmt( is, "%llu", &ulli );
+	return is;
+} // ?|?
+
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, float & f ) {
+	fmt( is, "%f", &f );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, double & d ) {
+	fmt( is, "%lf", &d );
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, long double & ld ) {
+	fmt( is, "%Lf", &ld );
+	return is;
+} // ?|?
+
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, float _Complex & fc ) {
 	float re, im;
 	fmt( is, "%g%gi", &re, &im );
-	*fc = re + im * _Complex_I;
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, double _Complex * dc ) {
+	fc = re + im * _Complex_I;
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, double _Complex & dc ) {
 	double re, im;
 	fmt( is, "%lf%lfi", &re, &im );
-	*dc = re + im * _Complex_I;
-	return is;
-} // ?|?
-
-forall( dtype istype | istream( istype ) )
-istype * ?|?( istype * is, long double _Complex * ldc ) {
+	dc = re + im * _Complex_I;
+	return is;
+} // ?|?
+
+forall( dtype istype | istream( istype ) )
+istype * ?|?( istype * is, long double _Complex & ldc ) {
 	long double re, im;
 	fmt( is, "%Lf%Lfi", &re, &im );
-	*ldc = re + im * _Complex_I;
+	ldc = re + im * _Complex_I;
 	return is;
 } // ?|?
Index: src/libcfa/rational
===================================================================
--- src/libcfa/rational	(revision cb811ac113953880ed3864498f0a4d0b46e2be48)
+++ src/libcfa/rational	(revision 7bc4e6bfac3fb788dc7964c508880c9d8c802484)
@@ -12,6 +12,6 @@
 // Created On       : Wed Apr  6 17:56:25 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul  7 09:34:33 2017
-// Update Count     : 93
+// Last Modified On : Wed Aug 23 22:35:09 2017
+// Update Count     : 95
 //
 
@@ -135,6 +135,6 @@
 // I/O
 forall( otype RationalImpl | arithmetic( RationalImpl ) )
-forall( dtype istype | istream( istype ) | { istype * ?|?( istype *, RationalImpl * ); } )
-istype * ?|?( istype *, Rational(RationalImpl) * );
+forall( dtype istype | istream( istype ) | { istype * ?|?( istype *, RationalImpl & ); } )
+istype * ?|?( istype *, Rational(RationalImpl) & );
 
 forall( otype RationalImpl | arithmetic( RationalImpl ) )
Index: src/libcfa/rational.c
===================================================================
--- src/libcfa/rational.c	(revision cb811ac113953880ed3864498f0a4d0b46e2be48)
+++ src/libcfa/rational.c	(revision 7bc4e6bfac3fb788dc7964c508880c9d8c802484)
@@ -10,6 +10,6 @@
 // Created On       : Wed Apr  6 17:54:28 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 16 18:35:36 2017
-// Update Count     : 150
+// Last Modified On : Wed Aug 23 22:38:48 2017
+// Update Count     : 154
 //
 
@@ -34,11 +34,11 @@
 
 forall( otype RationalImpl | arithmetic( RationalImpl ) )
-static RationalImpl simplify( RationalImpl * n, RationalImpl * d ) {
-	if ( *d == (RationalImpl){0} ) {
+static RationalImpl simplify( RationalImpl & n, RationalImpl & d ) {
+	if ( d == (RationalImpl){0} ) {
 		serr | "Invalid rational number construction: denominator cannot be equal to 0." | endl;
 		exit( EXIT_FAILURE );
 	} // exit
-	if ( *d < (RationalImpl){0} ) { *d = -*d; *n = -*n; } // move sign to numerator
-	return gcd( abs( *n ), *d );						// simplify
+	if ( d < (RationalImpl){0} ) { d = -d; n = -n; }	// move sign to numerator
+	return gcd( abs( n ), d );							// simplify
 } // Rationalnumber::simplify
 
@@ -58,5 +58,5 @@
 forall( otype RationalImpl | arithmetic( RationalImpl ) )
 void ?{}( Rational(RationalImpl) & r, RationalImpl n, RationalImpl d ) {
-	RationalImpl t = simplify( &n, &d );				// simplify
+	RationalImpl t = simplify( n, d );					// simplify
 	r.numerator = n / t;
 	r.denominator = d / t;
@@ -95,5 +95,5 @@
 RationalImpl denominator( Rational(RationalImpl) r, RationalImpl d ) {
 	RationalImpl prev = r.denominator;
-	RationalImpl t = simplify( &r.numerator, &d );			// simplify
+	RationalImpl t = simplify( r.numerator, d );			// simplify
 	r.numerator = r.numerator / t;
 	r.denominator = d / t;
@@ -228,11 +228,11 @@
 
 forall( otype RationalImpl | arithmetic( RationalImpl ) )
-forall( dtype istype | istream( istype ) | { istype * ?|?( istype *, RationalImpl * ); } )
-istype * ?|?( istype * is, Rational(RationalImpl) * r ) {
+forall( dtype istype | istream( istype ) | { istype * ?|?( istype *, RationalImpl & ); } )
+istype * ?|?( istype * is, Rational(RationalImpl) & r ) {
 	RationalImpl t;
-	is | &(r->numerator) | &(r->denominator);
-	t = simplify( &(r->numerator), &(r->denominator) );
-	r->numerator /= t;
-	r->denominator /= t;
+	is | r.numerator | r.denominator;
+	t = simplify( r.numerator, r.denominator );
+	r.numerator /= t;
+	r.denominator /= t;
 	return is;
 } // ?|?
