Index: src/benchmark/bench.h
===================================================================
--- src/benchmark/bench.h	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/benchmark/bench.h	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -10,5 +10,5 @@
 #if defined(__cforall)
 }
-#include <bits/cfatime.h>
+//#include <bits/cfatime.h>
 #endif
 
Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/libcfa/Makefile.am	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:54:01 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Tue Mar 27 14:27:05 2018
-## Update Count     : 225
+## Last Modified On : Sun Apr  8 23:49:34 2018
+## Update Count     : 227
 ###############################################################################
 
@@ -101,5 +101,4 @@
 	gmp 				\
 	bits/align.h 		\
-	bits/cfatime.h 		\
 	bits/containers.h		\
 	bits/defs.h 		\
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/libcfa/Makefile.in	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -265,6 +265,6 @@
 	concurrency/thread concurrency/kernel concurrency/monitor \
 	${shell find stdhdr -type f -printf "%p "} math gmp \
-	bits/align.h bits/cfatime.h bits/containers.h bits/defs.h \
-	bits/debug.h bits/locks.h concurrency/invoke.h
+	bits/align.h bits/containers.h bits/defs.h bits/debug.h \
+	bits/locks.h concurrency/invoke.h
 HEADERS = $(nobase_cfa_include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
@@ -438,5 +438,4 @@
 	gmp 				\
 	bits/align.h 		\
-	bits/cfatime.h 		\
 	bits/containers.h		\
 	bits/defs.h 		\
Index: src/libcfa/bits/cfatime.h
===================================================================
--- src/libcfa/bits/cfatime.h	(revision 35f730f354743329a974699df96cde989593246d)
+++ 	(revision )
@@ -1,99 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// align.h --
-//
-// Author           : Thierry Delisle
-// Created On       : Mon Feb 12 18:06:59 2018
-// Last Modified By :
-// Last Modified On :
-// Update Count     : 0
-//
-// This  library is free  software; you  can redistribute  it and/or  modify it
-// under the terms of the GNU Lesser General Public License as published by the
-// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
-// option) any later version.
-//
-// This library is distributed in the  hope that it will be useful, but WITHOUT
-// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
-// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
-// for more details.
-//
-// You should  have received a  copy of the  GNU Lesser General  Public License
-// along  with this library.
-//
-
-#pragma once
-
-extern "C" {
-#include <time.h>
-}
-
-#include "bits/defs.h"
-
-struct timespec;
-struct itimerval;
-
-//=============================================================================================
-// time type
-//=============================================================================================
-
-struct __cfa_time_t {
-	uint64_t val;
-};
-
-// ctors
-static inline void ?{}( __cfa_time_t & this ) { this.val = 0; }
-static inline void ?{}( __cfa_time_t & this, const __cfa_time_t & rhs ) { this.val = rhs.val; }
-static inline void ?{}( __cfa_time_t & this, zero_t zero ) { this.val = 0; }
-
-static inline __cfa_time_t ?=?( __cfa_time_t & this, zero_t rhs ) {
-	this.val = 0;
-	return this;
-}
-
-// logical ops
-static inline bool ?==?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val == rhs.val; }
-static inline bool ?!=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val != rhs.val; }
-static inline bool ?>? ( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val >  rhs.val; }
-static inline bool ?<? ( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val <  rhs.val; }
-static inline bool ?>=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val >= rhs.val; }
-static inline bool ?<=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val <= rhs.val; }
-
-static inline bool ?==?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val == rhs; }
-static inline bool ?!=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val != rhs; }
-static inline bool ?>? ( __cfa_time_t lhs, zero_t rhs ) { return lhs.val >  rhs; }
-static inline bool ?<? ( __cfa_time_t lhs, zero_t rhs ) { return lhs.val <  rhs; }
-static inline bool ?>=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val >= rhs; }
-static inline bool ?<=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val <= rhs; }
-
-// addition/substract
-static inline __cfa_time_t ?+?( __cfa_time_t lhs, __cfa_time_t rhs ) {
-	__cfa_time_t ret;
-	ret.val = lhs.val + rhs.val;
-	return ret;
-}
-
-static inline __cfa_time_t ?-?( __cfa_time_t lhs, __cfa_time_t rhs ) {
-	__cfa_time_t ret;
-	ret.val = lhs.val - rhs.val;
-	return ret;
-}
-
-static inline __cfa_time_t ?`cfa_s ( uint64_t val ) { __cfa_time_t ret; ret.val = val * 1_000_000_000ul; return ret; }
-static inline __cfa_time_t ?`cfa_ms( uint64_t val ) { __cfa_time_t ret; ret.val = val *     1_000_000ul; return ret; }
-static inline __cfa_time_t ?`cfa_us( uint64_t val ) { __cfa_time_t ret; ret.val = val *         1_000ul; return ret; }
-static inline __cfa_time_t ?`cfa_ns( uint64_t val ) { __cfa_time_t ret; ret.val = val *             1ul; return ret; }
-
-static inline __cfa_time_t from_s  ( uint64_t val ) { __cfa_time_t ret; ret.val = val * 1_000_000_000ul; return ret; }
-static inline __cfa_time_t from_ms ( uint64_t val ) { __cfa_time_t ret; ret.val = val *     1_000_000ul; return ret; }
-static inline __cfa_time_t from_us ( uint64_t val ) { __cfa_time_t ret; ret.val = val *         1_000ul; return ret; }
-static inline __cfa_time_t from_ns ( uint64_t val ) { __cfa_time_t ret; ret.val = val *             1ul; return ret; }
-
-static inline uint64_t to_s  ( __cfa_time_t t ) { return t.val / 1_000_000_000ul; }
-static inline uint64_t to_ms ( __cfa_time_t t ) { return t.val /     1_000_000ul; }
-static inline uint64_t to_us ( __cfa_time_t t ) { return t.val /         1_000ul; }
-static inline uint64_t to_ns ( __cfa_time_t t ) { return t.val /             1ul; }
Index: src/libcfa/concurrency/alarm.c
===================================================================
--- src/libcfa/concurrency/alarm.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/libcfa/concurrency/alarm.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -10,6 +10,6 @@
 // Created On       : Fri Jun 2 11:31:25 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr  4 16:47:29 2018
-// Update Count     : 49
+// Last Modified On : Mon Apr  9 13:36:18 2018
+// Update Count     : 61
 //
 
@@ -25,11 +25,4 @@
 #include "kernel_private.h"
 #include "preemption.h"
-
-
-static inline void ?{}( itimerval & this, Duration alarm ) with( this ) {
-	// itimerval.it_value is a duration but uses time data-structure timeval.
-	it_value{ alarm`s, alarm`us };						// seconds, microseconds
-	it_interval{ 0 };									// 0 seconds, 0 microseconds
-}
 
 //=============================================================================================
Index: src/libcfa/concurrency/preemption.c
===================================================================
--- src/libcfa/concurrency/preemption.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/libcfa/concurrency/preemption.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -10,6 +10,6 @@
 // Created On       : Mon Jun 5 14:20:42 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 30 17:27:43 2018
-// Update Count     : 31
+// Last Modified On : Mon Apr  9 13:52:39 2018
+// Update Count     : 36
 //
 
@@ -23,5 +23,4 @@
 }
 
-#include "bits/cfatime.h"
 #include "bits/signal.h"
 
@@ -126,5 +125,5 @@
 		register_self( alarm );
 	}
-	// Zero duraction but alarm is set
+	// Zero duration but alarm is set
 	else if ( duration == 0 && alarm->set ) {
 		unregister_self( alarm );
Index: src/libcfa/time
===================================================================
--- src/libcfa/time	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/libcfa/time	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -10,6 +10,6 @@
 // Created On       : Wed Mar 14 23:18:57 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr  6 11:15:49 2018
-// Update Count     : 610
+// Last Modified On : Mon Apr  9 13:10:23 2018
+// Update Count     : 616
 // 
 
@@ -128,4 +128,19 @@
 
 
+//######################### C itimerval #########################
+
+static inline void ?{}( itimerval & itv, Duration alarm ) with( itv ) {
+	// itimerval contains durations but but uses time data-structure timeval.
+	it_value{ alarm`s, (alarm % 1`s)`us };				// seconds, microseconds
+	it_interval{ 0 };									// 0 seconds, 0 microseconds
+} // itimerval
+
+static inline void ?{}( itimerval & itv, Duration alarm, Duration interval ) with( itv ) {
+	// itimerval contains durations but but uses time data-structure timeval.
+	it_value{ alarm`s, (alarm % 1`s)`us };				// seconds, microseconds
+	it_interval{ interval`s, interval`us };				// seconds, microseconds
+} // itimerval
+
+
 //######################### C time #########################
 
@@ -142,5 +157,5 @@
 struct Time {											// private
 	uint64_t tv;										// nanoseconds since UNIX epoch
-};
+}; // Time
 
 static inline void ?{}( Time & t ) with( t ) { tv = 0; } // fast
Index: src/tests/concurrent/examples/datingService.c
===================================================================
--- src/tests/concurrent/examples/datingService.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/concurrent/examples/datingService.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -8,6 +8,6 @@
 // Created On       : Mon Oct 30 12:56:20 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jan  2 12:19:01 2018
-// Update Count     : 22
+// Last Modified On : Wed Mar 14 22:48:40 2018
+// Update Count     : 23
 //
 
@@ -88,6 +88,6 @@
 int main() {
 	DatingService TheExchange;
-	Girl *girls[NoOfPairs];
-	Boy  *boys[NoOfPairs];
+	Girl * girls[NoOfPairs];
+	Boy  * boys[NoOfPairs];
 
 	srandom( /*getpid()*/ 103 );
Index: src/tests/concurrent/preempt.c
===================================================================
--- src/tests/concurrent/preempt.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/concurrent/preempt.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -3,8 +3,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/concurrent/signal/barge.c
===================================================================
--- src/tests/concurrent/signal/barge.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/concurrent/signal/barge.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -16,8 +16,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return 0;
 }
Index: src/tests/concurrent/signal/block.c
===================================================================
--- src/tests/concurrent/signal/block.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/concurrent/signal/block.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -22,8 +22,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/concurrent/signal/disjoint.c
===================================================================
--- src/tests/concurrent/signal/disjoint.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/concurrent/signal/disjoint.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -13,8 +13,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/concurrent/signal/wait.c
===================================================================
--- src/tests/concurrent/signal/wait.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/concurrent/signal/wait.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -20,8 +20,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/concurrent/waitfor/simple.c
===================================================================
--- src/tests/concurrent/waitfor/simple.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/concurrent/waitfor/simple.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -10,8 +10,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/create.c
===================================================================
--- src/tests/preempt_longrun/create.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/preempt_longrun/create.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -5,8 +5,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/enter.c
===================================================================
--- src/tests/preempt_longrun/enter.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/preempt_longrun/enter.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -6,8 +6,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/enter3.c
===================================================================
--- src/tests/preempt_longrun/enter3.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/preempt_longrun/enter3.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -6,8 +6,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/processor.c
===================================================================
--- src/tests/preempt_longrun/processor.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/preempt_longrun/processor.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -5,8 +5,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/stack.c
===================================================================
--- src/tests/preempt_longrun/stack.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/preempt_longrun/stack.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -5,8 +5,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
Index: src/tests/preempt_longrun/yield.c
===================================================================
--- src/tests/preempt_longrun/yield.c	(revision 35f730f354743329a974699df96cde989593246d)
+++ src/tests/preempt_longrun/yield.c	(revision 8ad653339f39e704e4be3cbd354de857c44a52f4)
@@ -9,8 +9,8 @@
 
 #ifndef PREEMPTION_RATE
-#define PREEMPTION_RATE 10_000ul
+#define PREEMPTION_RATE 10`ms
 #endif
 
-unsigned int default_preemption() {
+Duration default_preemption() {
 	return PREEMPTION_RATE;
 }
