Index: src/libcfa/concurrency/kernel
===================================================================
--- src/libcfa/concurrency/kernel	(revision 0cf5b7992194658ccc6f30eae5069589577633a3)
+++ src/libcfa/concurrency/kernel	(revision 383e15937e3d246f4f6e12a323fea19369e8143d)
@@ -108,5 +108,5 @@
 #ifdef __CFA_DEBUG__
 	// Last function to enable preemption on this processor
-	char * last_enable;
+	const char * last_enable;
 #endif
 };
Index: src/libcfa/concurrency/monitor.c
===================================================================
--- src/libcfa/concurrency/monitor.c	(revision 0cf5b7992194658ccc6f30eae5069589577633a3)
+++ src/libcfa/concurrency/monitor.c	(revision 383e15937e3d246f4f6e12a323fea19369e8143d)
@@ -823,5 +823,5 @@
 		this.monitor_count = thrd->monitors.size;
 
-		this.monitors = malloc( this.monitor_count * sizeof( *this.monitors ) );
+		this.monitors = (monitor_desc **)malloc( this.monitor_count * sizeof( *this.monitors ) );
 		for( int i = 0; i < this.monitor_count; i++ ) {
 			this.monitors[i] = thrd->monitors[i];
Index: src/libcfa/stdhdr/stddef.h
===================================================================
--- src/libcfa/stdhdr/stddef.h	(revision 0cf5b7992194658ccc6f30eae5069589577633a3)
+++ src/libcfa/stdhdr/stddef.h	(revision 383e15937e3d246f4f6e12a323fea19369e8143d)
@@ -4,7 +4,7 @@
 // The contents of this file are covered under the licence agreement in the
 // file "LICENCE" distributed with Cforall.
-// 
-// stddef.h -- 
-// 
+//
+// stddef.h --
+//
 // Author           : Peter A. Buhr
 // Created On       : Mon Jul  4 23:25:26 2016
@@ -12,8 +12,10 @@
 // Last Modified On : Tue Jul  5 20:40:01 2016
 // Update Count     : 12
-// 
+//
 
 extern "C" {
-#include_next <stddef.h>								// has internal check for multiple expansion
+#include_next <stddef.h>                // has internal check for multiple expansion
+#undef NULL
+#define NULL 0                          // define NULL as 0 rather than (void*)0 to take advantage of zero_t
 } // extern "C"
 
Index: src/libcfa/stdlib
===================================================================
--- src/libcfa/stdlib	(revision 0cf5b7992194658ccc6f30eae5069589577633a3)
+++ src/libcfa/stdlib	(revision 383e15937e3d246f4f6e12a323fea19369e8143d)
@@ -77,5 +77,5 @@
 	//printf( "X8\n" );
 	T * ptr = (T *)(void *)malloc( (size_t)sizeof(T) );	// C malloc
-    return memset( ptr, (int)fill, sizeof(T) );			// initial with fill value
+    return (T *)memset( ptr, (int)fill, sizeof(T) );			// initial with fill value
 } // alloc
 
@@ -87,10 +87,10 @@
 	//printf( "X10\n" );
 	T * ptr = (T *)(void *)malloc( dim * (size_t)sizeof(T) ); // C malloc
-    return memset( ptr, (int)fill, dim * sizeof(T) );
+    return (T *)memset( ptr, (int)fill, dim * sizeof(T) );
 } // alloc
 
 static inline forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim ) {
 	//printf( "X11\n" );
-	return (void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc
+	return (T *)(void *)realloc( (void *)ptr, dim * (size_t)sizeof(T) ); // C realloc
 } // alloc
 forall( dtype T | sized(T) ) T * alloc( T ptr[], size_t dim, char fill );
@@ -103,5 +103,5 @@
 	//printf( "X14\n" );
     T * ptr = (T *)memalign( align, sizeof(T) );
-    return memset( ptr, (int)fill, sizeof(T) );
+    return (T *)memset( ptr, (int)fill, sizeof(T) );
 } // align_alloc
 
@@ -113,5 +113,5 @@
 	//printf( "X16\n" );
     T * ptr = (T *)memalign( align, dim * sizeof(T) );
-    return memset( ptr, (int)fill, dim * sizeof(T) );
+    return (T *)memset( ptr, (int)fill, dim * sizeof(T) );
 } // align_alloc
 
@@ -120,10 +120,10 @@
 static inline forall( dtype T | sized(T) ) T * memset( T * dest, char c ) {
 	//printf( "X17\n" );
-	return memset( dest, c, sizeof(T) );
+	return (T *)memset( dest, c, sizeof(T) );
 } // memset
 extern "C" { void * memcpy( void * dest, const void * src, size_t size ); } // use default C routine for void *
 static inline forall( dtype T | sized(T) ) T * memcpy( T * dest, const T * src ) {
 	//printf( "X18\n" );
-	return memcpy( dest, src, sizeof(T) );
+	return (T *)memcpy( dest, src, sizeof(T) );
 } // memcpy
 
@@ -131,9 +131,9 @@
 static inline forall( dtype T | sized(T) ) T * memset( T dest[], size_t dim, char c ) {
 	//printf( "X19\n" );
-	return (void *)memset( dest, c, dim * sizeof(T) );	// C memset
+	return (T *)(void *)memset( dest, c, dim * sizeof(T) );	// C memset
 } // memset
 static inline forall( dtype T | sized(T) ) T * memcpy( T dest[], const T src[], size_t dim ) {
 	//printf( "X20\n" );
-	return (void *)memcpy( dest, src, dim * sizeof(T) ); // C memcpy
+	return (T *)(void *)memcpy( dest, src, dim * sizeof(T) ); // C memcpy
 } // memcpy
 
