Index: src/libcfa/concurrency/alarm.c
===================================================================
--- src/libcfa/concurrency/alarm.c	(revision 094476de228cd8cb7d6a34066aacd6b8adb12617)
+++ src/libcfa/concurrency/alarm.c	(revision 2a84d06d1deb50fd2637ab8e384392089bda2faa)
@@ -10,6 +10,6 @@
 // Created On       : Fri Jun 2 11:31:25 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:35:18 2017
-// Update Count     : 1
+// Last Modified On : Tue Mar 27 14:12:11 2018
+// Update Count     : 41
 //
 
@@ -27,15 +27,7 @@
 
 
-static inline void ?{}( itimerval & this, __cfa_time_t * alarm ) with( this ) {
-	it_value.tv_sec = alarm->val / (1`cfa_s).val;			// seconds
-	it_value.tv_usec = max( (alarm->val % (1`cfa_s).val) / (1`cfa_us).val, 1000 ); // microseconds
-	it_interval.tv_sec = 0;
-	it_interval.tv_usec = 0;
-}
-
-static inline void ?{}( __cfa_time_t & this, timespec * curr ) {
-	uint64_t secs  = curr->tv_sec;
-	uint64_t nsecs = curr->tv_nsec;
-	this.val = from_s(secs).val + nsecs;
+static inline void ?{}( itimerval & this, Duration alarm ) with( this ) {
+	it_value   { alarm };								// seconds, microseconds
+	it_interval{ 0 };
 }
 
@@ -44,13 +36,12 @@
 //=============================================================================================
 
-__cfa_time_t __kernel_get_time() {
+Time __kernel_get_time() {
 	timespec curr;
-	clock_gettime( CLOCK_REALTIME, &curr );
-	return (__cfa_time_t){ &curr };
+	clock_gettime( CLOCK_MONOTONIC_RAW, &curr );		// CLOCK_REALTIME
+	return (Time){ curr };
 }
 
-void __kernel_set_timer( __cfa_time_t alarm ) {
-	itimerval val = { &alarm };
-	setitimer( ITIMER_REAL, &val, NULL );
+void __kernel_set_timer( Duration alarm ) {
+	setitimer( ITIMER_REAL, &(itimerval){ alarm }, NULL );
 }
 
@@ -59,5 +50,5 @@
 //=============================================================================================
 
-void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s ) with( this ) {
+void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period ) with( this ) {
 	this.thrd = thrd;
 	this.alarm = alarm;
@@ -68,5 +59,5 @@
 }
 
-void ?{}( alarm_node_t & this, processor   * proc, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s ) with( this ) {
+void ?{}( alarm_node_t & this, processor   * proc, Time alarm, Duration period ) with( this ) {
 	this.proc = proc;
 	this.alarm = alarm;
Index: src/libcfa/concurrency/alarm.h
===================================================================
--- src/libcfa/concurrency/alarm.h	(revision 094476de228cd8cb7d6a34066aacd6b8adb12617)
+++ src/libcfa/concurrency/alarm.h	(revision 2a84d06d1deb50fd2637ab8e384392089bda2faa)
@@ -10,6 +10,6 @@
 // Created On       : Fri Jun 2 11:31:25 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:59:27 2017
-// Update Count     : 3
+// Last Modified On : Mon Mar 26 16:25:41 2018
+// Update Count     : 11
 //
 
@@ -21,5 +21,5 @@
 #include <assert.h>
 
-#include "bits/cfatime.h"
+#include "time"
 
 struct thread_desc;
@@ -30,6 +30,6 @@
 //=============================================================================================
 
-__cfa_time_t __kernel_get_time();
-void __kernel_set_timer( __cfa_time_t alarm );
+Time __kernel_get_time();
+void __kernel_set_timer( Duration alarm );
 
 //=============================================================================================
@@ -38,6 +38,6 @@
 
 struct alarm_node_t {
-	__cfa_time_t alarm;		// time when alarm goes off
-	__cfa_time_t period;		// if > 0 => period of alarm
+	Time alarm;				// time when alarm goes off
+	Duration period;			// if > 0 => period of alarm
 	alarm_node_t * next;		// intrusive link list field
 
@@ -53,6 +53,6 @@
 typedef alarm_node_t ** __alarm_it_t;
 
-void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s );
-void ?{}( alarm_node_t & this, processor   * proc, __cfa_time_t alarm = 0`cfa_s, __cfa_time_t period = 0`cfa_s );
+void ?{}( alarm_node_t & this, thread_desc * thrd, Time alarm, Duration period );
+void ?{}( alarm_node_t & this, processor   * proc, Time alarm, Duration period );
 void ^?{}( alarm_node_t & this );
 
Index: src/libcfa/concurrency/kernel
===================================================================
--- src/libcfa/concurrency/kernel	(revision 094476de228cd8cb7d6a34066aacd6b8adb12617)
+++ src/libcfa/concurrency/kernel	(revision 2a84d06d1deb50fd2637ab8e384392089bda2faa)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:58:39 2017
-// Update Count     : 2
+// Last Modified On : Fri Mar 23 17:08:20 2018
+// Update Count     : 3
 //
 
@@ -19,5 +19,5 @@
 
 #include "invoke.h"
-#include "bits/cfatime.h"
+#include "time"
 
 extern "C" {
@@ -49,8 +49,8 @@
 
 	// Preemption rate on this cluster
-	__cfa_time_t preemption_rate;
+	Duration preemption_rate;
 };
 
-extern __cfa_time_t default_preemption();
+extern Duration default_preemption();
 
 void ?{} (cluster & this);
Index: src/libcfa/concurrency/preemption.c
===================================================================
--- src/libcfa/concurrency/preemption.c	(revision 094476de228cd8cb7d6a34066aacd6b8adb12617)
+++ src/libcfa/concurrency/preemption.c	(revision 2a84d06d1deb50fd2637ab8e384392089bda2faa)
@@ -10,6 +10,6 @@
 // Created On       : Mon Jun 5 14:20:42 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb  9 16:38:13 2018
-// Update Count     : 14
+// Last Modified On : Tue Mar 27 11:28:51 2018
+// Update Count     : 24
 //
 
@@ -27,8 +27,8 @@
 
 #if !defined(__CFA_DEFAULT_PREEMPTION__)
-#define __CFA_DEFAULT_PREEMPTION__ 10`cfa_ms
+#define __CFA_DEFAULT_PREEMPTION__ 10`ms
 #endif
 
-__cfa_time_t default_preemption() __attribute__((weak)) {
+Duration default_preemption() __attribute__((weak)) {
 	return __CFA_DEFAULT_PREEMPTION__;
 }
@@ -78,5 +78,5 @@
 
 // Get next expired node
-static inline alarm_node_t * get_expired( alarm_list_t * alarms, __cfa_time_t currtime ) {
+static inline alarm_node_t * get_expired( alarm_list_t * alarms, Time currtime ) {
 	if( !alarms->head ) return NULL;                          // If no alarms return null
 	if( alarms->head->alarm >= currtime ) return NULL;        // If alarms head not expired return null
@@ -88,5 +88,5 @@
 	alarm_node_t * node = NULL;                     // Used in the while loop but cannot be declared in the while condition
 	alarm_list_t * alarms = &event_kernel->alarms;  // Local copy for ease of reading
-	__cfa_time_t currtime = __kernel_get_time();    // Check current time once so we everything "happens at once"
+	Time currtime = __kernel_get_time();			// Check current time once so we everything "happens at once"
 
 	//Loop throught every thing expired
@@ -102,5 +102,5 @@
 
 		// Check if this is a periodic alarm
-		__cfa_time_t period = node->period;
+		Duration period = node->period;
 		if( period > 0 ) {
 			node->alarm = currtime + period;    // Alarm is periodic, add currtime to it (used cached current time)
@@ -117,9 +117,9 @@
 
 // Update the preemption of a processor and notify interested parties
-void update_preemption( processor * this, __cfa_time_t duration ) {
+void update_preemption( processor * this, Duration duration ) {
 	alarm_node_t * alarm = this->preemption_alarm;
 
 	// Alarms need to be enabled
-	if ( duration > 0 && !alarm->set ) {
+	if ( duration > 0 && ! alarm->set ) {
 		alarm->alarm = __kernel_get_time() + duration;
 		alarm->period = duration;
@@ -291,5 +291,5 @@
 // Used by thread to control when they want to receive preemption signals
 void ?{}( preemption_scope & this, processor * proc ) {
-	(this.alarm){ proc, 0`cfa_s, 0`cfa_s };
+	(this.alarm){ proc, (Time){ 0 }, 0`s };
 	this.proc = proc;
 	this.proc->preemption_alarm = &this.alarm;
@@ -301,5 +301,5 @@
 	disable_interrupts();
 
-	update_preemption( this.proc, 0`cfa_s );
+	update_preemption( this.proc, 0`s );
 }
 
Index: src/libcfa/concurrency/preemption.h
===================================================================
--- src/libcfa/concurrency/preemption.h	(revision 094476de228cd8cb7d6a34066aacd6b8adb12617)
+++ src/libcfa/concurrency/preemption.h	(revision 2a84d06d1deb50fd2637ab8e384392089bda2faa)
@@ -10,6 +10,6 @@
 // Created On       : Mon Jun 5 14:20:42 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:34:25 2017
-// Update Count     : 1
+// Last Modified On : Fri Mar 23 17:18:53 2018
+// Update Count     : 2
 //
 
@@ -21,5 +21,5 @@
 void kernel_start_preemption();
 void kernel_stop_preemption();
-void update_preemption( processor * this, __cfa_time_t duration );
+void update_preemption( processor * this, Duration duration );
 void tick_preemption();
 
