Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision 0f5605831af289410e02930b6965262873df0fc9)
+++ src/libcfa/Makefile.am	(revision 10a97adb78ace9015521af17d66f1782aca51583)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:54:01 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Tue Apr 10 15:20:28 2018
-## Update Count     : 230
+## Last Modified On : Thu Apr 12 14:38:34 2018
+## Update Count     : 231
 ###############################################################################
 
@@ -101,4 +101,5 @@
 	gmp 				\
 	time_t.h			\
+	clock			\
 	bits/align.h 		\
 	bits/containers.h		\
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision 0f5605831af289410e02930b6965262873df0fc9)
+++ src/libcfa/Makefile.in	(revision 10a97adb78ace9015521af17d66f1782aca51583)
@@ -265,5 +265,5 @@
 	concurrency/thread concurrency/kernel concurrency/monitor \
 	${shell find stdhdr -type f -printf "%p "} math gmp time_t.h \
-	bits/align.h bits/containers.h bits/defs.h bits/debug.h \
+	clock bits/align.h bits/containers.h bits/defs.h bits/debug.h \
 	bits/locks.h concurrency/invoke.h
 HEADERS = $(nobase_cfa_include_HEADERS)
@@ -438,4 +438,5 @@
 	gmp 				\
 	time_t.h			\
+	clock			\
 	bits/align.h 		\
 	bits/containers.h		\
Index: src/libcfa/clock
===================================================================
--- src/libcfa/clock	(revision 10a97adb78ace9015521af17d66f1782aca51583)
+++ src/libcfa/clock	(revision 10a97adb78ace9015521af17d66f1782aca51583)
@@ -0,0 +1,88 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// clock -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Thu Apr 12 14:36:06 2018
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Apr 12 16:53:31 2018
+// Update Count     : 3
+// 
+
+#include <time>
+
+
+//######################### C time #########################
+
+static inline char * ctime( time_t tp ) { char * buf = ctime( &tp ); buf[24] = '\0'; return buf; }
+static inline char * ctime_r( time_t tp, char * buf ) { ctime_r( &tp, buf ); buf[24] = '\0'; return buf; }
+static inline tm * gmtime( time_t tp ) { return gmtime( &tp ); }
+static inline tm * gmtime_r( time_t tp, tm * result ) { return gmtime_r( &tp, result ); }
+static inline tm * localtime( time_t tp ) { return localtime( &tp ); }
+static inline tm * localtime_r( time_t tp, tm * result ) { return localtime_r( &tp, result ); }
+
+
+//######################### Clock #########################
+
+struct Clock {											// private
+	Duration offset;									// for virtual clock: contains offset from real-time
+	int clocktype;										// implementation only -1 (virtual), CLOCK_REALTIME
+};
+
+static inline void resetClock( Clock & clk ) with( clk ) {
+	clocktype = CLOCK_REALTIME_COARSE;
+} // Clock::resetClock
+
+static inline void resetClock( Clock & clk, Duration adj ) with( clk ) {
+	clocktype = -1;
+	offset = adj + timezone`s;							// timezone (global) is (UTC - local time) in seconds
+} // resetClock
+
+static inline void ?{}( Clock & clk ) { resetClock( clk ); }
+static inline void ?{}( Clock & clk, Duration adj ) { resetClock( clk, adj ); }
+
+static inline Duration getRes() {
+	struct timespec res;
+	clock_getres( CLOCK_REALTIME_COARSE, &res );
+	return ((int64_t)res.tv_sec * TIMEGRAN + res.tv_nsec)`ns;
+} // getRes
+
+static inline Time getTimeNsec() {						// with nanoseconds
+	timespec curr;
+	clock_gettime( CLOCK_REALTIME_COARSE, &curr );
+	return (Time){ curr };
+} // getTime
+
+static inline Time getTime() {							// without nanoseconds
+	timespec curr;
+	clock_gettime( CLOCK_REALTIME_COARSE, &curr );
+	curr.tv_nsec = 0;
+	return (Time){ curr };
+} // getTime
+
+static inline Time getTime( Clock & clk ) with( clk ) {
+	return getTime() + offset;
+} // getTime
+
+static inline Time ?()( Clock & clk ) with( clk ) {		// alternative syntax
+	return getTime() + offset;
+} // getTime
+
+static inline timeval getTime( Clock & clk ) {
+	return (timeval){ clk() };
+} // getTime
+
+static inline tm getTime( Clock & clk ) with( clk ) {
+	tm ret;
+	localtime_r( getTime( clk ).tv_sec, &ret );
+	return ret;
+} // getTime
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/libcfa/iostream
===================================================================
--- src/libcfa/iostream	(revision 0f5605831af289410e02930b6965262873df0fc9)
+++ src/libcfa/iostream	(revision 10a97adb78ace9015521af17d66f1782aca51583)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jan 25 13:08:39 2018
-// Update Count     : 149
+// Last Modified On : Thu Apr 12 14:34:37 2018
+// Update Count     : 150
 //
 
@@ -159,4 +159,11 @@
 forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrC );
 
+
+#include <time_t.h>										// Duration (constructors) / Time (constructors)
+
+forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Duration dur );
+forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Time time );
+
+
 // Local Variables: //
 // mode: c //
Index: src/libcfa/time
===================================================================
--- src/libcfa/time	(revision 0f5605831af289410e02930b6965262873df0fc9)
+++ src/libcfa/time	(revision 10a97adb78ace9015521af17d66f1782aca51583)
@@ -10,6 +10,6 @@
 // Created On       : Wed Mar 14 23:18:57 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr 10 17:25:34 2018
-// Update Count     : 622
+// Last Modified On : Thu Apr 12 16:53:35 2018
+// Update Count     : 629
 // 
 
@@ -23,9 +23,8 @@
 #include <sys/time.h>									// timeval
 }
-#include <iostream>										// istype/ostype
+#include <time_t.h>										// Duration/Time types
 
 enum { TIMEGRAN = 1_000_000_000LL };					// nanosecond granularity, except for timeval
 
-#include <time_t.h>										// Duration (constructors) / Time (constructors)
 
 //######################### Duration #########################
@@ -68,6 +67,4 @@
 
 static inline Duration abs( Duration rhs ) { return rhs.tv >= 0 ? rhs : -rhs; }
-
-forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Duration dur );
 
 static inline Duration ?`ns( int64_t nsec ) { return (Duration)@{ nsec }; }
@@ -136,14 +133,4 @@
 
 
-//######################### C time #########################
-
-static inline char * ctime( time_t tp ) { char * buf = ctime( &tp ); buf[24] = '\0'; return buf; }
-static inline char * ctime_r( time_t tp, char * buf ) { ctime_r( &tp, buf ); buf[24] = '\0'; return buf; }
-static inline tm * gmtime( time_t tp ) { return gmtime( &tp ); }
-static inline tm * gmtime_r( time_t tp, tm * result ) { return gmtime_r( &tp, result ); }
-static inline tm * localtime( time_t tp ) { return localtime( &tp ); }
-static inline tm * localtime_r( time_t tp, tm * result ) { return localtime_r( &tp, result ); }
-
-
 //######################### Time #########################
 
@@ -199,6 +186,4 @@
 size_t strftime( char * buf, size_t size, const char * fmt, Time time );
 
-forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype & os, Time time );
-
 //------------------------- timeval (cont) -------------------------
 
@@ -215,61 +200,4 @@
 } // ?{}
 
-
-//######################### Clock #########################
-
-struct Clock {											// private
-	Duration offset;									// for virtual clock: contains offset from real-time
-	int clocktype;										// implementation only -1 (virtual), CLOCK_REALTIME
-};
-
-static inline void resetClock( Clock & clk ) with( clk ) {
-	clocktype = CLOCK_REALTIME_COARSE;
-} // Clock::resetClock
-
-static inline void resetClock( Clock & clk, Duration adj ) with( clk ) {
-	clocktype = -1;
-	offset = adj + timezone`s;							// timezone (global) is (UTC - local time) in seconds
-} // resetClock
-
-static inline void ?{}( Clock & clk ) { resetClock( clk ); }
-static inline void ?{}( Clock & clk, Duration adj ) { resetClock( clk, adj ); }
-
-static inline Duration getRes() {
-	struct timespec res;
-	clock_getres( CLOCK_REALTIME_COARSE, &res );
-	return ((int64_t)res.tv_sec * TIMEGRAN + res.tv_nsec)`ns;
-} // getRes
-
-static inline Time getTimeNsec() {						// with nanoseconds
-	timespec curr;
-	clock_gettime( CLOCK_REALTIME_COARSE, &curr );
-	return (Time){ curr };
-} // getTime
-
-static inline Time getTime() {							// without nanoseconds
-	timespec curr;
-	clock_gettime( CLOCK_REALTIME_COARSE, &curr );
-	curr.tv_nsec = 0;
-	return (Time){ curr };
-} // getTime
-
-static inline Time getTime( Clock & clk ) with( clk ) {
-	return getTime() + offset;
-} // getTime
-
-static inline Time ?()( Clock & clk ) with( clk ) {		// alternative syntax
-	return getTime() + offset;
-} // getTime
-
-static inline timeval getTime( Clock & clk ) {
-	return (timeval){ clk() };
-} // getTime
-
-static inline tm getTime( Clock & clk ) with( clk ) {
-	tm ret;
-	localtime_r( getTime( clk ).tv_sec, &ret );
-	return ret;
-} // getTime
-
 // Local Variables: //
 // mode: c //
Index: src/libcfa/time.c
===================================================================
--- src/libcfa/time.c	(revision 0f5605831af289410e02930b6965262873df0fc9)
+++ src/libcfa/time.c	(revision 10a97adb78ace9015521af17d66f1782aca51583)
@@ -10,9 +10,10 @@
 // Created On       : Tue Mar 27 13:33:14 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Apr  1 17:30:08 2018
-// Update Count     : 21
+// Last Modified On : Thu Apr 12 14:41:00 2018
+// Update Count     : 22
 // 
 
 #include "time"
+#include "iostream"
 #include <stdio.h>										// snprintf
 
