Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/Makefile.am	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -67,5 +67,5 @@
 	bits/debug.hfa         \
 	bits/locks.hfa         \
-	concurrency/invoke.hfa
+	concurrency/invoke.h
 
 MOSTLYCLEANFILES = prelude.c
Index: libcfa/src/Makefile.in
===================================================================
--- libcfa/src/Makefile.in	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/Makefile.in	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -343,14 +343,18 @@
 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@
 
+#----------------------------------------------------------------------------------------------------------------
+
 # not all platforms support concurrency, add option do disable it
-headers = fstream iostream iterator limits rational time stdlib common \
-	containers/maybe containers/pair containers/result \
-	containers/vector concurrency/coroutine concurrency/thread \
-	concurrency/kernel concurrency/monitor concurrency/mutex
-libobjs = ${headers:=.o}
+headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa \
+	rational.hfa time.hfa stdlib.hfa common.hfa \
+	containers/maybe.hfa containers/pair.hfa containers/result.hfa \
+	containers/vector.hfa concurrency/coroutine.hfa \
+	concurrency/thread.hfa concurrency/kernel.hfa \
+	concurrency/monitor.hfa concurrency/mutex.hfa
+libobjs = ${headers:.hfa=.o}
 
 # not all platforms support concurrency, add option do disable it
 libsrc = prelude.c startup.cfa interpose.cfa bits/debug.cfa assert.cfa \
-	exception.c virtual.c heap.cfa ${headers:=.cfa} \
+	exception.c virtual.c heap.cfa ${headers:.hfa=.cfa} \
 	concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
 	concurrency/invoke.c concurrency/preemption.cfa
@@ -359,17 +363,17 @@
 cfa_includedir = $(CFA_INCDIR)
 nobase_cfa_include_HEADERS = \
-	${headers}		\
-	${stdhdr}		\
-	math			\
-	gmp			\
-	time_t.h		\
-	bits/align.h 		\
-	bits/containers.h	\
-	bits/defs.h 		\
-	bits/debug.h 		\
-	bits/locks.h 		\
+	${headers}             \
+	${stdhdr}              \
+	math.hfa               \
+	gmp.hfa                \
+	time_t.hfa             \
+	bits/align.hfa         \
+	bits/containers.hfa    \
+	bits/defs.hfa          \
+	bits/debug.hfa         \
+	bits/locks.hfa         \
 	concurrency/invoke.h
 
-CLEANFILES = prelude.c
+MOSTLYCLEANFILES = prelude.c
 all: all-am
 
@@ -670,7 +674,7 @@
 	fi
 mostlyclean-generic:
+	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
 
 clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
@@ -783,17 +787,9 @@
 	$(am__mv) $$depbase.Tpo $$depbase.Po
 
-# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
-# SKULLDUGGERY in order to make sure this isn't called make the rule always fail but also create a rule for headers
-% : %.c
-	echo "Dummy rule, should never be called"
-	false
-
-# This rule should always match headers and since it has no prerequisite it will never be called
-$(addprefix $(srcdir)/,$(headers)):
-	echo "Dummy rule, should never be called"
-	false
-
-${libobjs} : ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
-
+#----------------------------------------------------------------------------------------------------------------
+# add dependency to cfa-cpp so all libraries are rebuilt with new translator
+${libobjs} : ${cfalib_DATA}
+
+#----------------------------------------------------------------------------------------------------------------
 maintainer-clean-local:
 	-rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
Index: libcfa/src/bits/signal.hfa
===================================================================
--- libcfa/src/bits/signal.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/bits/signal.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -22,5 +22,5 @@
 #include <errno.h>
 #define __USE_GNU
-#include <signal.hfa>
+#include <signal.h>
 #undef __USE_GNU
 #include <stdlib.h>
Index: libcfa/src/common.cfa
===================================================================
--- libcfa/src/common.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/common.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -1,11 +1,11 @@
-//                               -*- Mode: C -*- 
-// 
+//                               -*- Mode: C -*-
+//
 // 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.
-// 
-// common.c -- 
-// 
+//
+// common.c --
+//
 // Author           : Peter A. Buhr
 // Created On       : Thu Jul 12 08:02:29 2018
@@ -13,7 +13,7 @@
 // Last Modified On : Thu Jul 12 08:38:47 2018
 // Update Count     : 3
-// 
+//
 
-#include "common"
+#include "common.hfa"
 #include <stdlib.h>					// div_t, *div
 
Index: libcfa/src/concurrency/alarm.hfa
===================================================================
--- libcfa/src/concurrency/alarm.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/alarm.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -21,5 +21,5 @@
 #include <assert.h>
 
-#include "time"
+#include "time.hfa"
 
 struct thread_desc;
Index: libcfa/src/concurrency/coroutine.cfa
===================================================================
--- libcfa/src/concurrency/coroutine.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/coroutine.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include "coroutine"
+#include "coroutine.hfa"
 
 extern "C" {
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/kernel.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -22,10 +22,10 @@
 #include <fenv.h>
 #include <sys/resource.h>
-#include <signal.hfa>
+#include <signal.h>
 #include <unistd.h>
 }
 
 //CFA Includes
-#include "time"
+#include "time.hfa"
 #include "kernel_private.hfa"
 #include "preemption.hfa"
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -16,6 +16,6 @@
 #pragma once
 
-#include "kernel"
-#include "thread"
+#include "kernel.hfa"
+#include "thread.hfa"
 
 #include "alarm.hfa"
Index: libcfa/src/concurrency/monitor.cfa
===================================================================
--- libcfa/src/concurrency/monitor.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/monitor.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include "monitor"
+#include "monitor.hfa"
 
 #include <stdlib.hfa>
@@ -21,5 +21,5 @@
 #include "kernel_private.hfa"
 
-#include "bits/algorithms.hfa"
+#include "bits/algorithm.hfa"
 
 //-----------------------------------------------------------------------------
Index: libcfa/src/concurrency/monitor.hfa
===================================================================
--- libcfa/src/concurrency/monitor.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/monitor.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -20,5 +20,5 @@
 #include <assert.h>
 #include "invoke.h"
-#include "stdlib"
+#include "stdlib.hfa"
 
 trait is_monitor(dtype T) {
Index: libcfa/src/concurrency/mutex.cfa
===================================================================
--- libcfa/src/concurrency/mutex.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/mutex.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -16,5 +16,5 @@
 //
 
-#include "mutex"
+#include "mutex.hfa"
 
 #include "kernel_private.hfa"
Index: libcfa/src/concurrency/mutex.hfa
===================================================================
--- libcfa/src/concurrency/mutex.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/mutex.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -20,5 +20,5 @@
 #include <stdbool.h>
 
-#include "bits/algorithms.hfa"
+#include "bits/algorithm.hfa"
 #include "bits/locks.hfa"
 
Index: libcfa/src/concurrency/thread.cfa
===================================================================
--- libcfa/src/concurrency/thread.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/thread.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include "thread"
+#include "thread.hfa"
 
 #include "kernel_private.hfa"
Index: libcfa/src/concurrency/thread.hfa
===================================================================
--- libcfa/src/concurrency/thread.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/concurrency/thread.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -19,7 +19,7 @@
 #include "invoke.h"
 
-#include "coroutine"
-#include "kernel"
-#include "monitor"
+#include "coroutine.hfa"
+#include "kernel.hfa"
+#include "monitor.hfa"
 
 //-----------------------------------------------------------------------------
Index: libcfa/src/containers/maybe.cfa
===================================================================
--- libcfa/src/containers/maybe.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/containers/maybe.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include <containers/maybe>
+#include <containers/maybe.hfa>
 #include <assert.h>
 
Index: libcfa/src/containers/pair.cfa
===================================================================
--- libcfa/src/containers/pair.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/containers/pair.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -11,7 +11,7 @@
 //
 
-#include <containers/pair>
+#include <containers/pair.hfa>
 
-forall(otype R, otype S 
+forall(otype R, otype S
 	| { int ?==?(R, R); int ?<?(R, R); int ?<?(S, S); })
 int ?<?(pair(R, S) p, pair(R, S) q) {
@@ -19,5 +19,5 @@
 }
 
-forall(otype R, otype S 
+forall(otype R, otype S
 	| { int ?==?(R, R); int ?<?(R, R); int ?<=?(S, S); })
 int ?<=?(pair(R, S) p, pair(R, S) q) {
@@ -35,5 +35,5 @@
 }
 
-forall(otype R, otype S 
+forall(otype R, otype S
 	| { int ?==?(R, R); int ?>?(R, R); int ?>?(S, S); })
 int ?>?(pair(R, S) p, pair(R, S) q) {
@@ -41,5 +41,5 @@
 }
 
-forall(otype R, otype S 
+forall(otype R, otype S
 	| { int ?==?(R, R); int ?>?(R, R); int ?>=?(S, S); })
 int ?>=?(pair(R, S) p, pair(R, S) q) {
Index: libcfa/src/containers/result.cfa
===================================================================
--- libcfa/src/containers/result.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/containers/result.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include <containers/result>
+#include <containers/result.hfa>
 #include <assert.h>
 
Index: libcfa/src/containers/vector.cfa
===================================================================
--- libcfa/src/containers/vector.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/containers/vector.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include <containers/vector>
+#include <containers/vector.hfa>
 
 #include <stdlib.hfa>
Index: libcfa/src/fstream.cfa
===================================================================
--- libcfa/src/fstream.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/fstream.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include "fstream"
+#include "fstream.hfa"
 
 #include <stdio.h>										// vfprintf, vfscanf
Index: libcfa/src/fstream.hfa
===================================================================
--- libcfa/src/fstream.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/fstream.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -16,5 +16,5 @@
 #pragma once
 
-#include "iostream"
+#include "iostream.hfa"
 
 enum { sepSize = 16 };
Index: libcfa/src/heap.cfa
===================================================================
--- libcfa/src/heap.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/heap.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -26,5 +26,5 @@
 #include "bits/locks.hfa"									// __spinlock_t
 #include "startup.hfa"									// STARTUP_PRIORITY_MEMORY
-#include "stdlib"										// bsearchl
+#include "stdlib.hfa"										// bsearchl
 #include "malloc.h"
 
Index: libcfa/src/interpose.cfa
===================================================================
--- libcfa/src/interpose.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/interpose.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -18,5 +18,5 @@
 #include <unistd.h>										// _exit, getpid
 #define __USE_GNU
-#include <signal.hfa>
+#include <signal.h>
 #undef __USE_GNU
 extern "C" {
Index: bcfa/src/iostream
===================================================================
--- libcfa/src/iostream	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ 	(revision )
@@ -1,175 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// iostream --
-//
-// Author           : Peter A. Buhr
-// Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jul  1 12:12:22 2018
-// Update Count     : 155
-//
-
-#pragma once
-
-#include "iterator"
-
-trait ostream( dtype ostype ) {
-	// private
-	_Bool sepPrt( ostype & );							// return separator state (on/off)
-	void sepReset( ostype & );							// set separator state to default state
-	void sepReset( ostype &, _Bool );					// set separator and default state
-	const char * sepGetCur( ostype & );					// get current separator string
-	void sepSetCur( ostype &, const char * );			// set current separator string
-	_Bool getNL( ostype & );							// check newline
-	void setNL( ostype &, _Bool );						// saw newline
-	// public
-	void sepOn( ostype & );								// turn separator state on
-	void sepOff( ostype & );							// turn separator state off
-	_Bool sepDisable( ostype & );						// set default state to off, and return previous state
-	_Bool sepEnable( ostype & );						// set default state to on, and return previous state
-
-	const char * sepGet( ostype & );					// get separator string
-	void sepSet( ostype &, const char * );				// set separator to string (15 character maximum)
-	const char * sepGetTuple( ostype & );				// get tuple separator string
-	void sepSetTuple( ostype &, const char * );			// set tuple separator to string (15 character maximum)
-
-	int fail( ostype & );
-	int flush( ostype & );
-	void open( ostype & os, const char * name, const char * mode );
-	void close( ostype & os );
-	ostype & write( ostype &, const char *, size_t );
-	int fmt( ostype &, const char fmt[], ... );
-}; // ostream
-
-// trait writeable( otype T ) {
-// 	forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype &, T );
-// }; // writeable
-
-trait writeable( otype T, dtype ostype | ostream( ostype ) ) {
-	ostype & ?|?( ostype &, T );
-}; // writeable
-
-// implement writable for intrinsic types
-
-forall( dtype ostype | ostream( ostype ) ) {
-	ostype & ?|?( ostype &, _Bool );
-
-	ostype & ?|?( ostype &, char );
-	ostype & ?|?( ostype &, signed char );
-	ostype & ?|?( ostype &, unsigned char );
-
-	ostype & ?|?( ostype &, short int );
-	ostype & ?|?( ostype &, unsigned short int );
-	ostype & ?|?( ostype &, int );
-	ostype & ?|?( ostype &, unsigned int );
-	ostype & ?|?( ostype &, long int );
-	ostype & ?|?( ostype &, long long int );
-	ostype & ?|?( ostype &, unsigned long int );
-	ostype & ?|?( ostype &, unsigned long long int );
-
-	ostype & ?|?( ostype &, float ); // FIX ME: should not be required
-	ostype & ?|?( ostype &, double );
-	ostype & ?|?( ostype &, long double );
-
-	ostype & ?|?( ostype &, float _Complex );
-	ostype & ?|?( ostype &, double _Complex );
-	ostype & ?|?( ostype &, long double _Complex );
-
-	ostype & ?|?( ostype &, const char * );
-	// ostype & ?|?( ostype &, const char16_t * );
-#if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
-	// ostype & ?|?( ostype &, const char32_t * );
-#endif // ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 )
-	// ostype & ?|?( ostype &, const wchar_t * );
-	ostype & ?|?( ostype &, const void * );
-
-	// manipulators
-	ostype & ?|?( ostype &, ostype & (*)( ostype & ) );
-	ostype & endl( ostype & );
-	ostype & sep( ostype & );
-	ostype & sepTuple( ostype & );
-	ostype & sepOn( ostype & );
-	ostype & sepOff( ostype & );
-	ostype & sepDisable( ostype & );
-	ostype & sepEnable( ostype & );
-} // distribution
-
-// tuples
-forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } )
-ostype & ?|?( ostype & os, T arg, Params rest );
-
-// writes the range [begin, end) to the given stream
-forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
-void write( iterator_type begin, iterator_type end, ostype & os );
-
-forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
-void write_reverse( iterator_type begin, iterator_type end, ostype & os );
-
-//---------------------------------------
-
-trait istream( dtype istype ) {
-	int fail( istype & );
-	int eof( istype & );
-	void open( istype & is, const char * name );
-	void close( istype & is );
-	istype & read( istype &, char *, size_t );
-	istype & ungetc( istype &, char );
-	int fmt( istype &, const char fmt[], ... );
-}; // istream
-
-trait readable( otype T ) {
-	forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, T );
-}; // readable
-
-forall( dtype istype | istream( istype ) ) {
-	istype & ?|?( istype &, _Bool & );
-
-	istype & ?|?( istype &, char & );
-	istype & ?|?( istype &, signed char & );
-	istype & ?|?( istype &, unsigned char & );
-
-	istype & ?|?( istype &, short int & );
-	istype & ?|?( istype &, unsigned short int & );
-	istype & ?|?( istype &, int & );
-	istype & ?|?( istype &, unsigned int & );
-	istype & ?|?( istype &, long int & );
-	istype & ?|?( istype &, long long int & );
-	istype & ?|?( istype &, unsigned long int & );
-	istype & ?|?( istype &, unsigned long long int & );
-
-	istype & ?|?( istype &, float & );
-	istype & ?|?( istype &, double & );
-	istype & ?|?( istype &, long double & );
-
-	istype & ?|?( istype &, float _Complex & );
-	istype & ?|?( istype &, double _Complex & );
-	istype & ?|?( istype &, long double _Complex & );
-
-	// manipulators
-	istype & ?|?( istype &, istype & (*)( istype & ) );
-	istype & endl( istype & is );
-} // distribution
-
-struct _Istream_cstrUC { char * s; };
-_Istream_cstrUC cstr( char * );
-forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrUC );
-
-struct _Istream_cstrC { char * s; int size; };
-_Istream_cstrC cstr( char *, int size );
-forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrC );
-
-
-#include <time_t.hfa>										// 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 //
-// tab-width: 4 //
-// End: //
Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/iostream.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include "iostream"
+#include "iostream.hfa"
 
 extern "C" {
Index: libcfa/src/iostream.hfa
===================================================================
--- libcfa/src/iostream.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
+++ libcfa/src/iostream.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -0,0 +1,175 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// iostream --
+//
+// Author           : Peter A. Buhr
+// Created On       : Wed May 27 17:56:53 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Jul  1 12:12:22 2018
+// Update Count     : 155
+//
+
+#pragma once
+
+#include "iterator.hfa"
+
+trait ostream( dtype ostype ) {
+	// private
+	_Bool sepPrt( ostype & );							// return separator state (on/off)
+	void sepReset( ostype & );							// set separator state to default state
+	void sepReset( ostype &, _Bool );					// set separator and default state
+	const char * sepGetCur( ostype & );					// get current separator string
+	void sepSetCur( ostype &, const char * );			// set current separator string
+	_Bool getNL( ostype & );							// check newline
+	void setNL( ostype &, _Bool );						// saw newline
+	// public
+	void sepOn( ostype & );								// turn separator state on
+	void sepOff( ostype & );							// turn separator state off
+	_Bool sepDisable( ostype & );						// set default state to off, and return previous state
+	_Bool sepEnable( ostype & );						// set default state to on, and return previous state
+
+	const char * sepGet( ostype & );					// get separator string
+	void sepSet( ostype &, const char * );				// set separator to string (15 character maximum)
+	const char * sepGetTuple( ostype & );				// get tuple separator string
+	void sepSetTuple( ostype &, const char * );			// set tuple separator to string (15 character maximum)
+
+	int fail( ostype & );
+	int flush( ostype & );
+	void open( ostype & os, const char * name, const char * mode );
+	void close( ostype & os );
+	ostype & write( ostype &, const char *, size_t );
+	int fmt( ostype &, const char fmt[], ... );
+}; // ostream
+
+// trait writeable( otype T ) {
+// 	forall( dtype ostype | ostream( ostype ) ) ostype & ?|?( ostype &, T );
+// }; // writeable
+
+trait writeable( otype T, dtype ostype | ostream( ostype ) ) {
+	ostype & ?|?( ostype &, T );
+}; // writeable
+
+// implement writable for intrinsic types
+
+forall( dtype ostype | ostream( ostype ) ) {
+	ostype & ?|?( ostype &, _Bool );
+
+	ostype & ?|?( ostype &, char );
+	ostype & ?|?( ostype &, signed char );
+	ostype & ?|?( ostype &, unsigned char );
+
+	ostype & ?|?( ostype &, short int );
+	ostype & ?|?( ostype &, unsigned short int );
+	ostype & ?|?( ostype &, int );
+	ostype & ?|?( ostype &, unsigned int );
+	ostype & ?|?( ostype &, long int );
+	ostype & ?|?( ostype &, long long int );
+	ostype & ?|?( ostype &, unsigned long int );
+	ostype & ?|?( ostype &, unsigned long long int );
+
+	ostype & ?|?( ostype &, float ); // FIX ME: should not be required
+	ostype & ?|?( ostype &, double );
+	ostype & ?|?( ostype &, long double );
+
+	ostype & ?|?( ostype &, float _Complex );
+	ostype & ?|?( ostype &, double _Complex );
+	ostype & ?|?( ostype &, long double _Complex );
+
+	ostype & ?|?( ostype &, const char * );
+	// ostype & ?|?( ostype &, const char16_t * );
+#if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous
+	// ostype & ?|?( ostype &, const char32_t * );
+#endif // ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 )
+	// ostype & ?|?( ostype &, const wchar_t * );
+	ostype & ?|?( ostype &, const void * );
+
+	// manipulators
+	ostype & ?|?( ostype &, ostype & (*)( ostype & ) );
+	ostype & endl( ostype & );
+	ostype & sep( ostype & );
+	ostype & sepTuple( ostype & );
+	ostype & sepOn( ostype & );
+	ostype & sepOff( ostype & );
+	ostype & sepDisable( ostype & );
+	ostype & sepEnable( ostype & );
+} // distribution
+
+// tuples
+forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype & ?|?( ostype &, Params ); } )
+ostype & ?|?( ostype & os, T arg, Params rest );
+
+// writes the range [begin, end) to the given stream
+forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
+void write( iterator_type begin, iterator_type end, ostype & os );
+
+forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) )
+void write_reverse( iterator_type begin, iterator_type end, ostype & os );
+
+//---------------------------------------
+
+trait istream( dtype istype ) {
+	int fail( istype & );
+	int eof( istype & );
+	void open( istype & is, const char * name );
+	void close( istype & is );
+	istype & read( istype &, char *, size_t );
+	istype & ungetc( istype &, char );
+	int fmt( istype &, const char fmt[], ... );
+}; // istream
+
+trait readable( otype T ) {
+	forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, T );
+}; // readable
+
+forall( dtype istype | istream( istype ) ) {
+	istype & ?|?( istype &, _Bool & );
+
+	istype & ?|?( istype &, char & );
+	istype & ?|?( istype &, signed char & );
+	istype & ?|?( istype &, unsigned char & );
+
+	istype & ?|?( istype &, short int & );
+	istype & ?|?( istype &, unsigned short int & );
+	istype & ?|?( istype &, int & );
+	istype & ?|?( istype &, unsigned int & );
+	istype & ?|?( istype &, long int & );
+	istype & ?|?( istype &, long long int & );
+	istype & ?|?( istype &, unsigned long int & );
+	istype & ?|?( istype &, unsigned long long int & );
+
+	istype & ?|?( istype &, float & );
+	istype & ?|?( istype &, double & );
+	istype & ?|?( istype &, long double & );
+
+	istype & ?|?( istype &, float _Complex & );
+	istype & ?|?( istype &, double _Complex & );
+	istype & ?|?( istype &, long double _Complex & );
+
+	// manipulators
+	istype & ?|?( istype &, istype & (*)( istype & ) );
+	istype & endl( istype & is );
+} // distribution
+
+struct _Istream_cstrUC { char * s; };
+_Istream_cstrUC cstr( char * );
+forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrUC );
+
+struct _Istream_cstrC { char * s; int size; };
+_Istream_cstrC cstr( char *, int size );
+forall( dtype istype | istream( istype ) ) istype & ?|?( istype &, _Istream_cstrC );
+
+
+#include <time_t.hfa>										// 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 //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/iterator.cfa
===================================================================
--- libcfa/src/iterator.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/iterator.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// iterator.c -- 
+// iterator.c --
 //
 // Author           : Richard C. Bilson
@@ -14,5 +14,5 @@
 //
 
-#include "iterator"
+#include "iterator.hfa"
 
 forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) )
Index: libcfa/src/limits.cfa
===================================================================
--- libcfa/src/limits.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/limits.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -1,10 +1,10 @@
-// 
+//
 // 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.
-// 
-// limits.c -- 
-// 
+//
+// limits.c --
+//
 // Author           : Peter A. Buhr
 // Created On       : Wed Apr  6 18:06:52 2016
@@ -12,5 +12,5 @@
 // Last Modified On : Thu Mar  1 16:22:51 2018
 // Update Count     : 74
-// 
+//
 
 #include <limits.h>
@@ -19,5 +19,5 @@
 #include <math.h>
 #include <complex.h>
-#include "limits"
+#include "limits.hfa"
 
 // Integral Constants
Index: libcfa/src/math.hfa
===================================================================
--- libcfa/src/math.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/math.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -350,5 +350,5 @@
 //---------------------------------------
 
-#include "common"
+#include "common.hfa"
 
 //---------------------------------------
Index: libcfa/src/rational.cfa
===================================================================
--- libcfa/src/rational.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/rational.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,7 +14,7 @@
 //
 
-#include "rational"
-#include "fstream"
-#include "stdlib"
+#include "rational.hfa"
+#include "fstream.hfa"
+#include "stdlib.hfa"
 
 forall( otype RationalImpl | arithmetic( RationalImpl ) ) {
Index: libcfa/src/rational.hfa
===================================================================
--- libcfa/src/rational.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/rational.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -18,5 +18,5 @@
 #pragma once
 
-#include "iostream"
+#include "iostream.hfa"
 
 trait scalar( otype T ) {
Index: libcfa/src/stdlib.cfa
===================================================================
--- libcfa/src/stdlib.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/stdlib.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include "stdlib"
+#include "stdlib.hfa"
 
 //---------------------------------------
Index: libcfa/src/stdlib.hfa
===================================================================
--- libcfa/src/stdlib.hfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/stdlib.hfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -251,5 +251,5 @@
 //---------------------------------------
 
-#include "common"
+#include "common.hfa"
 
 // Local Variables: //
Index: libcfa/src/time.cfa
===================================================================
--- libcfa/src/time.cfa	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ libcfa/src/time.cfa	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -1,10 +1,10 @@
-// 
+//
 // 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.
-// 
-// time.c -- 
-// 
+//
+// time.c --
+//
 // Author           : Peter A. Buhr
 // Created On       : Tue Mar 27 13:33:14 2018
@@ -12,8 +12,8 @@
 // Last Modified On : Sun May  6 22:26:00 2018
 // Update Count     : 37
-// 
+//
 
-#include "time"
-#include "iostream"
+#include "time.hfa"
+#include "iostream.hfa"
 #include <stdio.h>										// snprintf
 #include <assert.h>
Index: tests/.expect/fstream_test.txt
===================================================================
--- tests/.expect/fstream_test.txt	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/.expect/fstream_test.txt	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -2,4 +2,4 @@
 Vous avez entré -2
 le nombre -2 est négatif
-Entrez trois nombres, s'il vous plaît: 
+Entrez trois nombres, s'il vous plaît:
 Vous avez entré i:2 j:3 k:4
Index: tests/.expect/io1.txt
===================================================================
--- tests/.expect/io1.txt	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/.expect/io1.txt	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -8,5 +8,5 @@
 
 closing delimiters
-1, x 2. x 3; x 4! x 5? x 6% x 7¢ x 8» x 9) x 10] x 11} x
+1, x 2. x 3; x 4! x 5? x 6% x 7 ¢ x 8 » x 9) x 10] x 11} x
 
 opening/closing delimiters
Index: tests/Makefile.in
===================================================================
--- tests/Makefile.in	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/Makefile.in	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -307,11 +307,4 @@
 fstream_test_SOURCES = fstream_test.c
 avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
-
-# SKULLDUGGERY like libcfa/Makefile.am prevent extensionless headers from being generated
-# however, here it is more complicated because it must match the dependencies based on how
-# they are generated by gcc
-headers = $(shell find $(top_srcdir)/libcfa/src -type f ! -name "*.*")
-headers_real = $(shell realpath --relative-to=$(top_srcdir)/libcfa/src $(headers))
-headers_deps = $(addprefix %/, $(headers_real))
 all: all-am
 
@@ -618,4 +611,5 @@
 .INTERMEDIATE: .validate .validate.c
 
+#----------------------------------------------------------------------------------------------------------------
 all-local :
 	@+${TEST_PY} --debug=${debug} ${concurrent} ${quick_test}
@@ -638,10 +632,6 @@
 concurrency :
 	@+${TEST_PY} --debug=${debug} -Iconcurrent
-$(headers_deps) :
-	echo "Dummy rule, should never be called"
-
-# %/stdlib:
-# 	echo "Dummy rule, should never be called"
-
+
+#----------------------------------------------------------------------------------------------------------------
 # implicit rule so not all test require a rule
 % : %.c $(CC)
Index: tests/coroutine/.expect/fmtLines.txt
===================================================================
--- tests/coroutine/.expect/fmtLines.txt	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/coroutine/.expect/fmtLines.txt	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -1,78 +1,79 @@
-// /  / Cf  oral  l Ve  rsio  
-n 1.  0.0   Copy  righ  t (C  
-) 20  17 U  nive  rsit  y of  
- Wat  erlo  o///  / Th  e co  
-nten  ts o  f th  is f  ile   
-are   cove  red   unde  r th  
-e li  cenc  e ag  reem  ent   
-in t  he//   fil  e "L  ICEN  
-CE"   dist  ribu  ted   with  
- Cfo  rall  .//   // f  mtLi  
-nes.  cc -  - //   //   Auth  
-or                 : P  eter  
- A.   Buhr  // C  reat  ed O  
-n           : Su  n Se  p 17  
- 21:  56:1  5 20  17//   Las  
-t Mo  difi  ed B  y :   Pete  
-r A.   Buh  r//   Last   Mod  
-ifie  d On   : M  on S  ep 1  
-8 11  :35:  57 2  017/  / Up  
-date   Cou  nt       :   31/  
-/ #i  nclu  de <  fstr  eam>  
-#inc  lude   <co  rout  ine>  
-coro  utin  e Fo  rmat   {	c  
-har   ch;	  				  				  		//  
- use  d fo  r co  mmun  icat  
-ion	  int   g, b  ;			  				  
-				  // g  loba  l be  caus  
-e us  ed i  n de  stru  ctor  
-};vo  id ?  {}(   Form  at &  
- fmt   ) {        resu  me(   
-fmt   );		  				  				  // s  
-tart   cor  outi  ne}v  oid   
-^?{}  ( Fo  rmat   & f  mt )  
- {      if   ( f  mt.g   !=   
-0 ||   fmt  .b !  = 0   ) so  
-ut |   end  l;}v  oid   main  
-( Fo  rmat   & f  mt )   {	f  
-or (   ;;   ) {	  				  				  
-	//   for   as m  any   char  
-acte  rs		  for   ( fm  t.g   
-= 0;   fmt  .g <   5;   fmt.  
-g +=   1 )   {		  // g  roup  
-s of   5 b  lock  s			  for   
-( fm  t.b   = 0;   fmt  .b <  
- 4;   fmt.  b +=   1 )   {	/  
-/ bl  ocks   of   4 ch  arac  
-ters  				  for   ( ;;   ) {  
-				  			/  / fo  r ne  wlin  
-e ch  arac  ters  				  	sus  
-pend  ();	  				  if (   fmt  
-.ch   != '  \n'   ) br  eak;  
-		//   ign  ore   newl  ine	  
-			}   //   for	  			s  out   
-| fm  t.ch  ;			  				  // p  
-rint   cha  ract  er		  	} /  
-/ fo  r			  sout   | "    ";  
-				  				  // p  rint   blo  
-ck s  epar  ator  		}   // f  
-or		  sout   | e  ndl;  				  
-				  	//   prin  t gr  oup   
-sepa  rato  r	}   // f  or}   
-// m  ainv  oid   prt(   For  
-mat   & fm  t, c  har   ch )  
- {      fm  t.ch   = c  h;    
-  re  sume  ( fm  t );  } //  
- prt  int   main  () {  	For  
-mat   fmt;  	cha  r ch  ;	fo  
-r (   ;; )   {		  sin   | ch  
-;			  				  			/  / re  ad o  
-ne c  hara  cter  	  i  f (   
-eof(   sin   ) )   bre  ak;	  
-				  		//   eof   ?		  prt(  
- fmt  , ch   );	  } //   for  
-} //   mai  n//   Loca  l Va  
-riab  les:   ///  / ta  b-wi  
-dth:   4 /  ///   comp  ile-  
-comm  and:   "cf  a fm  tLin  
-es.c  " //  // E  nd:   //
+////   Cfo  rall   Ver  sion  
+ 1.0  .0 C  opyr  ight   (C)  
+ 201  7 Un  iver  sity   of   
+Wate  rloo  ////   The   con  
+tent  s of   thi  s fi  le a  
+re c  over  ed u  nder   the  
+ lic  ence   agr  eeme  nt i  
+n th  e//   file   "LI  CENC  
+E" d  istr  ibut  ed w  ith   
+Cfor  all.  ////   fmt  Line  
+s.cc   --/  ///   Auth  or    
+             : P  eter   A.   
+Buhr  // C  reat  ed O  n     
+      : Su  n Se  p 17   21:  
+56:1  5 20  17//   Las  t Mo  
+difi  ed B  y :   Pete  r A.  
+ Buh  r//   Last   Mod  ifie  
+d On   : M  on S  ep 1  8 11  
+:35:  57 2  017/  / Up  date  
+ Cou  nt       :   31/  /#in  
+clud  e <f  stre  am.h  fa>#  
+incl  ude   <cor  outi  ne.h  
+fa>c  orou  tine   For  mat   
+{	ch  ar c  h;		  				  				  
+	//   used   for   com  muni  
+cati  on	i  nt g  , b;  				  
+				  			/  / gl  obal   bec  
+ause   use  d in   des  truc  
+tor}  ;voi  d ?{  }( F  orma  
+t &   fmt   ) {      r  esum  
+e( f  mt )  ;			  				  			/  
+/ st  art   coro  utin  e}vo  
+id ^  ?{}(   For  mat   & fm  
+t )   {      if   ( fm  t.g   
+!= 0   ||   fmt.  b !=   0 )  
+ sou  t |   endl  ;}vo  id m  
+ain(   For  mat   & fm  t )   
+{	fo  r (   ;; )   {		  				  
+				  // f  or a  s ma  ny c  
+hara  cter  s		f  or (   fmt  
+.g =   0;   fmt.  g <   5; f  
+mt.g   +=   1 )   {		/  / gr  
+oups   of   5 bl  ocks  			f  
+or (   fmt  .b =   0;   fmt.  
+b <   4; f  mt.b   +=   1 )   
+{	//   blo  cks   of 4   cha  
+ract  ers	  			f  or (   ;;   
+) {	  				  		//   for   new  
+line   cha  ract  ers	  				  
+susp  end(  );		  			i  f (   
+fmt.  ch !  = '\  n' )   bre  
+ak;	  	//   igno  re n  ewli  
+ne		  		}   // f  or		  		so  
+ut |   fmt  .ch;  				  			/  
+/ pr  int   char  acte  r			  
+} //   for  			s  out   | "   
+ ";	  				  			/  / pr  int   
+bloc  k se  para  tor	  	} /  
+/ fo  r		s  out   | en  dl;	  
+				  				  // p  rint   gro  
+up s  epar  ator  	} /  / fo  
+r} /  / ma  invo  id p  rt(   
+Form  at &   fmt  , ch  ar c  
+h )   {      fmt  .ch   = ch  
+;      res  ume(   fmt   );}  
+ //   prti  nt m  ain(  ) {	  
+Form  at f  mt;	  char   ch;  
+	for   ( ;  ; )   {		s  in |  
+ ch;  				  				  		//   rea  
+d on  e ch  arac  ter	    if  
+ ( e  of(   sin   ) )   brea  
+k;		  				  	//   eof   ?		p  
+rt(   fmt,   ch   );	}   //   
+for}   //   main  // L  ocal  
+ Var  iabl  es:   ////   tab  
+-wid  th:   4 //  // c  ompi  
+le-c  omma  nd:   "cfa   fmt  
+Line  s.c"   ///  / En  d: /  
+/
Index: tests/fstream_test.c
===================================================================
--- tests/fstream_test.c	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/fstream_test.c	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -18,14 +18,14 @@
 int main( void ) {
 	int nombre;
-	sout | "Entrez un nombre, s'il vous pla�t:" | endl;
+	sout | "Entrez un nombre, s'il vous plaît:" | endl;
 	sin  | nombre;
-	sout | "Vous avez entr�" | nombre | endl;
+	sout | "Vous avez entré" | nombre | endl;
 	sout | "le nombre" | nombre | "est"
-		 | (nombre > 0 ? "positif" : nombre == 0 ? "z�ro" : "n�gatif") | endl;
+		 | (nombre > 0 ? "positif" : nombre == 0 ? "zéro" : "négatif") | endl;
 
-	sout | "Entrez trois nombres, s'il vous pla�t: " | endl;
+	sout | "Entrez trois nombres, s'il vous plaît: " | endl;
 	int i, j, k;
 	sin  | i | j | k;
-	sout | "Vous avez entr�" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k | endl;
+	sout | "Vous avez entré" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k | endl;
 }
 
Index: tests/io1.c
===================================================================
--- tests/io1.c	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/io1.c	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -31,9 +31,9 @@
 		 | "x =" | 4
 		 | "x $" | 5
-		 | "x �" | 6
-		 | "x �" | 7
-		 | "x �" | 8
-		 | "x �" | 9
-		 | "x �" | 10
+		 | "x £" | 6
+		 | "x ¥" | 7
+		 | "x ¡" | 8
+		 | "x ¿" | 9
+		 | "x «" | 10
 		 | endl | endl;
 
@@ -46,6 +46,6 @@
 		 | 5 | "? x"
 		 | 6 | "% x"
-		 | 7 | "� x"
-		 | 8 | "� x"
+		 | 7 | "¢ x"
+		 | 8 | "» x"
 		 | 9 | ") x"
 		 | 10 | "] x"
Index: tests/maybe.c
===================================================================
--- tests/maybe.c	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/maybe.c	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -15,5 +15,5 @@
 
 #include <assert.h>
-#include <containers/maybe>
+#include <containers/maybe.hfa>
 
 void checkPredicates() {
Index: tests/result.c
===================================================================
--- tests/result.c	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/result.c	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -15,5 +15,5 @@
 
 #include <assert.h>
-#include <containers/result>
+#include <containers/result.hfa>
 
 void checkPredicates() {
Index: tests/time.c
===================================================================
--- tests/time.c	(revision 73abe950d807eab747c9e14353b158fcca827308)
+++ tests/time.c	(revision 58b6d1b3b8da710a22441043f60cb988a2c2e56d)
@@ -14,5 +14,5 @@
 //
 
-#include "time"
+#include "time.hfa"
 #include <fstream.hfa>
 
