Index: Jenkinsfile
===================================================================
--- Jenkinsfile	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ Jenkinsfile	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -4,9 +4,9 @@
 // Main loop of the compilation
 //===========================================================================================================
-node ('master'){
-
+
+node('master') {
 	// Globals
-	BuildDir  = pwd tmp: true
-	SrcDir    = pwd tmp: false
+	BuildDir  = null
+	SrcDir    = null
 	Settings  = null
 	StageName = ''
@@ -26,19 +26,24 @@
 			Settings = prepare_build()
 
-			clean()
-
-			checkout()
-
-			notify_server(0)
-
-			build()
-
-			test()
-
-			benchmark()
-
-			build_doc()
-
-			publish()
+			node(Settings.Architecture.node) {
+				BuildDir  = pwd tmp: true
+				SrcDir    = pwd tmp: false
+
+				clean()
+
+				checkout()
+
+				notify_server(0)
+
+				build()
+
+				test()
+
+				benchmark()
+
+				build_doc()
+
+				publish()
+			}
 
 			notify_server(45)
@@ -75,5 +80,4 @@
 	}
 }
-
 //===========================================================================================================
 // Main compilation routines
@@ -250,8 +254,10 @@
 	public String name
 	public String flags
-
-	Arch_Desc(String name, String flags) {
+	public String node
+
+	Arch_Desc(String name, String flags, String node) {
 		this.name  = name
 		this.flags = flags
+		this.node  = node
 	}
 }
@@ -292,8 +298,8 @@
 		switch( param.Architecture ) {
 			case 'x64':
-				this.Architecture = new Arch_Desc('x64', '--host=x86_64')
+				this.Architecture = new Arch_Desc('x64', '--host=x86_64', 'x64')
 			break
 			case 'x86':
-				this.Architecture = new Arch_Desc('x86', '--host=i386')
+				this.Architecture = new Arch_Desc('x86', '--host=i386', 'x86')
 			break
 			default :
Index: benchmark/Makefile.am
===================================================================
--- benchmark/Makefile.am	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ benchmark/Makefile.am	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -21,5 +21,5 @@
 include $(top_srcdir)/src/cfa.make
 
-UPPCC = u++
+
 
 AM_CFLAGS = -O2 -Wall -I$(srcdir) -lrt -pthread
@@ -27,7 +27,7 @@
 AM_UPPFLAGS = -quiet -nodebug -multi
 
-TOOLSDIR = ${abs_top_srcdir}/tools/
-REPEAT   = ${TOOLSDIR}repeat
-STATS    = ${TOOLSDIR}stat.py
+TOOLSDIR = ${abs_top_builddir}/tools/
+REPEAT   = ${abs_top_builddir}/tools/repeat
+STATS    = ${abs_top_srcdir}/tools/stat.py
 repeats  = 30
 skipcompile = no
@@ -35,10 +35,15 @@
 PRINT_FORMAT = %20s: #Comments needed for spacing
 
-#prevent any tests in parallel
+# Dummy hack tricks
+EXTRA_PROGRAMS = dummy # build but do not install
+dummy_SOURCES = dummyC.c dummyCXX.cpp
+
+dummyC.c:
+	@echo "int main() { return 0; }" > ${@}
+
+dummyCXX.cpp:
+	@echo "int main() { return 0; }" > ${@}
+
 .NOTPARALLEL:
-
-#make sure automake includes the compile rules for C and C++
-EXTRA_PROGRAMS = dummy
-dummy_SOURCES = c.c cxx.cpp
 
 ## =========================================================================================================
@@ -64,5 +69,5 @@
 
 ${REPEAT} :
-	@+make -C ${TOOLSDIR} repeat
+	@+make -C ${abs_top_builddir}/tools repeat
 
 ## =========================================================================================================
@@ -146,11 +151,11 @@
 
 ctxswitch-cfa_coroutine$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa
 
 ctxswitch-cfa_thread$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa
 
 ctxswitch-cfa_thread2$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa
 
 ctxswitch-upp_coroutine$(EXEEXT):
@@ -188,11 +193,11 @@
 
 mutex-cfa1$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.cfa
 
 mutex-cfa2$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.cfa
 
 mutex-cfa4$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.cfa
 
 mutex-java_thread$(EXEEXT):
@@ -218,11 +223,11 @@
 
 signal-cfa1$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.cfa
 
 signal-cfa2$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.cfa
 
 signal-cfa4$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.cfa
 
 signal-java_thread$(EXEEXT):
@@ -244,11 +249,11 @@
 
 waitfor-cfa1$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.cfa
 
 waitfor-cfa2$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.cfa
 
 waitfor-cfa4$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.cfa
 
 ## =========================================================================================================
@@ -264,11 +269,11 @@
 
 creation-cfa_coroutine$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa
 
 creation-cfa_coroutine_eager$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa  -DEAGER
 
 creation-cfa_thread$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.cfa
 
 creation-upp_coroutine$(EXEEXT):
@@ -306,5 +311,5 @@
 
 compile-array$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.cfa
 
 compile-attributes$(EXEEXT):
@@ -312,22 +317,22 @@
 
 compile-empty$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.cfa
 
 compile-expression$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.cfa
 
 compile-io$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.cfa
 
 compile-monitor$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.cfa
 
 compile-operators$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.cfa
 
 compile-thread$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.cfa
 
 compile-typeof$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.c
-
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.cfa
+
Index: benchmark/Makefile.in
===================================================================
--- benchmark/Makefile.in	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ benchmark/Makefile.in	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -111,5 +111,5 @@
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am_dummy_OBJECTS = c.$(OBJEXT) cxx.$(OBJEXT)
+am_dummy_OBJECTS = dummyC.$(OBJEXT) dummyCXX.$(OBJEXT)
 dummy_OBJECTS = $(am_dummy_OBJECTS)
 dummy_LDADD = $(LDADD)
@@ -364,4 +364,5 @@
 am__v_GOC_0 = @echo "  GOC     " $@;
 am__v_GOC_1 = 
+UPPCC = u++
 UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
 AM_V_UPP = $(am__v_UPP_@AM_V@)
@@ -371,16 +372,15 @@
 
 # applies to both programs
-UPPCC = u++
 AM_CFLAGS = -O2 -Wall -I$(srcdir) -lrt -pthread
 AM_CFAFLAGS = -quiet -in-tree -nodebug
 AM_UPPFLAGS = -quiet -nodebug -multi
-TOOLSDIR = ${abs_top_srcdir}/tools/
-REPEAT = ${TOOLSDIR}repeat
-STATS = ${TOOLSDIR}stat.py
+TOOLSDIR = ${abs_top_builddir}/tools/
+REPEAT = ${abs_top_builddir}/tools/repeat
+STATS = ${abs_top_srcdir}/tools/stat.py
 repeats = 30
 skipcompile = no
 TIME_FORMAT = "%E"
 PRINT_FORMAT = %20s: #Comments needed for spacing
-dummy_SOURCES = c.c cxx.cpp
+dummy_SOURCES = dummyC.c dummyCXX.cpp
 CTXSWITCH_DEPEND = loop.run function.run fetch_add.run \
 	ctxswitch-pthread.run ctxswitch-cfa_coroutine.run \
@@ -435,6 +435,6 @@
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cxx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummyC.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummyCXX.Po@am__quote@
 
 .c.o:
@@ -706,5 +706,10 @@
 	$(am__mv) $$depbase.Tpo $$depbase.Plo
 
-#prevent any tests in parallel
+dummyC.c:
+	@echo "int main() { return 0; }" > ${@}
+
+dummyCXX.cpp:
+	@echo "int main() { return 0; }" > ${@}
+
 .NOTPARALLEL:
 
@@ -730,5 +735,5 @@
 
 ${REPEAT} :
-	@+make -C ${TOOLSDIR} repeat
+	@+make -C ${abs_top_builddir}/tools repeat
 
 jenkins$(EXEEXT):
@@ -788,11 +793,11 @@
 
 ctxswitch-cfa_coroutine$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_cor.cfa
 
 ctxswitch-cfa_thread$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd.cfa
 
 ctxswitch-cfa_thread2$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/cfa_thrd2.cfa
 
 ctxswitch-upp_coroutine$(EXEEXT):
@@ -829,11 +834,11 @@
 
 mutex-cfa1$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa1.cfa
 
 mutex-cfa2$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa2.cfa
 
 mutex-cfa4$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=5000000  $(srcdir)/mutex/cfa4.cfa
 
 mutex-java_thread$(EXEEXT):
@@ -858,11 +863,11 @@
 
 signal-cfa1$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa1.cfa
 
 signal-cfa2$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa2.cfa
 
 signal-cfa4$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedint/cfa4.cfa
 
 signal-java_thread$(EXEEXT):
@@ -882,11 +887,11 @@
 
 waitfor-cfa1$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa1.cfa
 
 waitfor-cfa2$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa2.cfa
 
 waitfor-cfa4$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=500000  $(srcdir)/schedext/cfa4.cfa
 
 creation$(EXEEXT) :\
@@ -901,11 +906,11 @@
 
 creation-cfa_coroutine$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa
 
 creation-cfa_coroutine_eager$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_cor.cfa  -DEAGER
 
 creation-cfa_thread$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.c
+	$(AM_V_CFA)$(CFACOMPILE) -DBENCH_N=10000000 $(srcdir)/creation/cfa_thrd.cfa
 
 creation-upp_coroutine$(EXEEXT):
@@ -938,5 +943,5 @@
 
 compile-array$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/array.cfa
 
 compile-attributes$(EXEEXT):
@@ -944,23 +949,23 @@
 
 compile-empty$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(srcdir)/compile/empty.cfa
 
 compile-expression$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/expression.cfa
 
 compile-io$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/io1.cfa
 
 compile-monitor$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/monitor.cfa
 
 compile-operators$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/operators.cfa
 
 compile-thread$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/concurrent/thread.cfa
 
 compile-typeof$(EXEEXT):
-	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.c
+	$(AM_V_CFA)$(CFACOMPILE) -fsyntax-only -w $(testdir)/typeof.cfa
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
Index: nchmark/compile/empty.c
===================================================================
--- benchmark/compile/empty.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,3 +1,0 @@
-int main() {
-	return 0;
-}
Index: benchmark/compile/empty.cfa
===================================================================
--- benchmark/compile/empty.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/compile/empty.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,3 @@
+int main() {
+	return 0;
+}
Index: nchmark/creation/cfa_cor.c
===================================================================
--- benchmark/creation/cfa_cor.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,23 +1,0 @@
-#include <stdio.h>
-#include <coroutine.hfa>
-
-#include "bench.h"
-
-coroutine MyCoroutine {};
-void ?{} (MyCoroutine & this) {
-#ifdef EAGER
-	prime(this);
-#endif
-}
-void main(MyCoroutine & this) {}
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			MyCoroutine m;
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: benchmark/creation/cfa_cor.cfa
===================================================================
--- benchmark/creation/cfa_cor.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/creation/cfa_cor.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <coroutine.hfa>
+
+#include "bench.h"
+
+coroutine MyCoroutine {};
+void ?{} (MyCoroutine & this) {
+#ifdef EAGER
+	prime(this);
+#endif
+}
+void main(MyCoroutine & this) {}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			MyCoroutine m;
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: nchmark/creation/cfa_thrd.c
===================================================================
--- benchmark/creation/cfa_thrd.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,18 +1,0 @@
-#include <stdio.h>
-#include <thread.hfa>
-
-#include "bench.h"
-
-thread MyThread {};
-void main(MyThread & this) {}
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			MyThread m;
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: benchmark/creation/cfa_thrd.cfa
===================================================================
--- benchmark/creation/cfa_thrd.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/creation/cfa_thrd.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <thread.hfa>
+
+#include "bench.h"
+
+thread MyThread {};
+void main(MyThread & this) {}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			MyThread m;
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: nchmark/ctxswitch/cfa_cor.c
===================================================================
--- benchmark/ctxswitch/cfa_cor.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,30 +1,0 @@
-#include <stdio.h>
-#include <kernel.hfa>
-#include <thread.hfa>
-
-#include "bench.h"
-
-coroutine GreatSuspender {};
-
-void ?{}( GreatSuspender & this ) {
-	prime(this);
-}
-
-void main( GreatSuspender & this ) {
-	while( true ) {
-		suspend();
-	}
-}
-
-int main(int argc, char* argv[]) {
-	GreatSuspender s;
-
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			resume( s );
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: benchmark/ctxswitch/cfa_cor.cfa
===================================================================
--- benchmark/ctxswitch/cfa_cor.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/ctxswitch/cfa_cor.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <kernel.hfa>
+#include <thread.hfa>
+
+#include "bench.h"
+
+coroutine GreatSuspender {};
+
+void ?{}( GreatSuspender & this ) {
+	prime(this);
+}
+
+void main( GreatSuspender & this ) {
+	while( true ) {
+		suspend();
+	}
+}
+
+int main(int argc, char* argv[]) {
+	GreatSuspender s;
+
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			resume( s );
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: nchmark/ctxswitch/cfa_thrd.c
===================================================================
--- benchmark/ctxswitch/cfa_thrd.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,15 +1,0 @@
-#include <stdio.h>
-#include <thread.hfa>
-
-#include "bench.h"
-
-int main(int argc, char* argv[]) {
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			yield();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: benchmark/ctxswitch/cfa_thrd.cfa
===================================================================
--- benchmark/ctxswitch/cfa_thrd.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/ctxswitch/cfa_thrd.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include <thread.hfa>
+
+#include "bench.h"
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			yield();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: nchmark/ctxswitch/cfa_thrd2.c
===================================================================
--- benchmark/ctxswitch/cfa_thrd2.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,28 +1,0 @@
-#include <stdio.h>
-#include <thread.hfa>
-
-#include "bench.h"
-
-volatile bool done = false;
-
-thread Fibre {};
-
-void main(Fibre & this) {
-	while(!done) {
-		yield();
-	}
-}
-
-int main(int argc, char* argv[]) {
-	Fibre f1;
-  	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			yield();
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	done = true;
-	return 0;
-}
Index: benchmark/ctxswitch/cfa_thrd2.cfa
===================================================================
--- benchmark/ctxswitch/cfa_thrd2.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/ctxswitch/cfa_thrd2.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <thread.hfa>
+
+#include "bench.h"
+
+volatile bool done = false;
+
+thread Fibre {};
+
+void main(Fibre & this) {
+	while(!done) {
+		yield();
+	}
+}
+
+int main(int argc, char* argv[]) {
+	Fibre f1;
+  	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			yield();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	done = true;
+	return 0;
+}
Index: nchmark/mutex/cfa1.c
===================================================================
--- benchmark/mutex/cfa1.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,19 +1,0 @@
-#include <monitor.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-monitor M {};
-void __attribute__((noinline)) call( M & mutex m ) {}
-
-int main(int argc, char* argv[]) {
-	M m;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			call(m);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: benchmark/mutex/cfa1.cfa
===================================================================
--- benchmark/mutex/cfa1.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/mutex/cfa1.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,19 @@
+#include <monitor.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+monitor M {};
+void __attribute__((noinline)) call( M & mutex m ) {}
+
+int main(int argc, char* argv[]) {
+	M m;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: nchmark/mutex/cfa2.c
===================================================================
--- benchmark/mutex/cfa2.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,19 +1,0 @@
-#include <monitor.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-monitor M {};
-void __attribute__((noinline)) call( M & mutex m1, M & mutex m2 ) {}
-
-int main(int argc, char* argv[]) {
-	M m1, m2;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			call(m1, m2);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: benchmark/mutex/cfa2.cfa
===================================================================
--- benchmark/mutex/cfa2.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/mutex/cfa2.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,19 @@
+#include <monitor.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+monitor M {};
+void __attribute__((noinline)) call( M & mutex m1, M & mutex m2 ) {}
+
+int main(int argc, char* argv[]) {
+	M m1, m2;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m1, m2);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: nchmark/mutex/cfa4.c
===================================================================
--- benchmark/mutex/cfa4.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#include <monitor.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-
-monitor M {};
-void __attribute__((noinline)) call( M & mutex m1, M & mutex m2, M & mutex m3, M & mutex m4 ) {}
-
-int main(int argc, char* argv[]) {
-	M m1, m2, m3, m4;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			call(m1, m2, m3, m4);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-}
Index: benchmark/mutex/cfa4.cfa
===================================================================
--- benchmark/mutex/cfa4.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/mutex/cfa4.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,20 @@
+#include <monitor.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+
+monitor M {};
+void __attribute__((noinline)) call( M & mutex m1, M & mutex m2, M & mutex m3, M & mutex m4 ) {}
+
+int main(int argc, char* argv[]) {
+	M m1, m2, m3, m4;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m1, m2, m3, m4);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: nchmark/schedext/cfa1.c
===================================================================
--- benchmark/schedext/cfa1.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-monitor M {};
-M m1;
-
-void __attribute__((noinline)) call( M & mutex a1 ) {}
-
-int  __attribute__((noinline)) wait( M & mutex a1 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			waitfor(call, a1);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1);
-}
Index: benchmark/schedext/cfa1.cfa
===================================================================
--- benchmark/schedext/cfa1.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/schedext/cfa1.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,44 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+monitor M {};
+M m1;
+
+void __attribute__((noinline)) call( M & mutex a1 ) {}
+
+int  __attribute__((noinline)) wait( M & mutex a1 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			waitfor(call, a1);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1);
+}
Index: nchmark/schedext/cfa2.c
===================================================================
--- benchmark/schedext/cfa2.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-monitor M {};
-M m1, m2;
-
-void __attribute__((noinline)) call( M & mutex a1, M & mutex a2 ) {}
-
-int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			waitfor(call, a1, a2);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1, m2); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1, m2);
-}
Index: benchmark/schedext/cfa2.cfa
===================================================================
--- benchmark/schedext/cfa2.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/schedext/cfa2.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,44 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+monitor M {};
+M m1, m2;
+
+void __attribute__((noinline)) call( M & mutex a1, M & mutex a2 ) {}
+
+int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			waitfor(call, a1, a2);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1, m2); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1, m2);
+}
Index: nchmark/schedext/cfa4.c
===================================================================
--- benchmark/schedext/cfa4.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-monitor M {};
-M m1, m2, m3, m4;
-
-void __attribute__((noinline)) call( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {}
-
-int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			waitfor(call, a1, a2, a3, a4);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1, m2, m3, m4); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1, m2, m3, m4);
-}
Index: benchmark/schedext/cfa4.cfa
===================================================================
--- benchmark/schedext/cfa4.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/schedext/cfa4.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,44 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+monitor M {};
+M m1, m2, m3, m4;
+
+void __attribute__((noinline)) call( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {}
+
+int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			waitfor(call, a1, a2, a3, a4);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1, m2, m3, m4); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1, m2, m3, m4);
+}
Index: nchmark/schedint/cfa1.c
===================================================================
--- benchmark/schedint/cfa1.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-condition c;
-monitor M {};
-M m1;
-
-void __attribute__((noinline)) call( M & mutex a1 ) {
-	signal(c);
-}
-
-int  __attribute__((noinline)) wait( M & mutex a1 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			wait(c);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1);
-}
Index: benchmark/schedint/cfa1.cfa
===================================================================
--- benchmark/schedint/cfa1.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/schedint/cfa1.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,47 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+condition c;
+monitor M {};
+M m1;
+
+void __attribute__((noinline)) call( M & mutex a1 ) {
+	signal(c);
+}
+
+int  __attribute__((noinline)) wait( M & mutex a1 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			wait(c);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1);
+}
Index: nchmark/schedint/cfa2.c
===================================================================
--- benchmark/schedint/cfa2.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-condition c;
-monitor M {};
-M m1, m2;
-
-void __attribute__((noinline)) call( M & mutex a1, M & mutex a2 ) {
-	signal(c);
-}
-
-int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			wait(c);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1, m2); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1, m2);
-}
Index: benchmark/schedint/cfa2.cfa
===================================================================
--- benchmark/schedint/cfa2.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/schedint/cfa2.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,47 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+condition c;
+monitor M {};
+M m1, m2;
+
+void __attribute__((noinline)) call( M & mutex a1, M & mutex a2 ) {
+	signal(c);
+}
+
+int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			wait(c);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1, m2); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1, m2);
+}
Index: nchmark/schedint/cfa4.c
===================================================================
--- benchmark/schedint/cfa4.c	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <stdio.h>
-
-#include "bench.h"
-
-int argc;
-char** argv;
-volatile int go = 0;
-
-condition c;
-monitor M {};
-M m1, m2, m3, m4;
-
-void __attribute__((noinline)) call( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
-	signal(c);
-}
-
-int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
-	go = 1;
-	BENCH(
-		for (size_t i = 0; i < n; i++) {
-			wait(c);
-		},
-		result
-	)
-
-	printf("%llu\n", result);
-	go = 0;
-	return 0;
-}
-
-thread T {};
-void ^?{}( T & mutex this ) {}
-void main( T & this ) {
-	while(go == 0) { yield(); }
-	while(go == 1) { call(m1, m2, m3, m4); }
-
-}
-
-int main(int margc, char* margv[]) {
-	argc = margc;
-	argv = margv;
-	T t;
-	return wait(m1, m2, m3, m4);
-}
Index: benchmark/schedint/cfa4.cfa
===================================================================
--- benchmark/schedint/cfa4.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
+++ benchmark/schedint/cfa4.cfa	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -0,0 +1,47 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <stdio.h>
+
+#include "bench.h"
+
+int argc;
+char** argv;
+volatile int go = 0;
+
+condition c;
+monitor M {};
+M m1, m2, m3, m4;
+
+void __attribute__((noinline)) call( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
+	signal(c);
+}
+
+int  __attribute__((noinline)) wait( M & mutex a1, M & mutex a2, M & mutex a3, M & mutex a4 ) {
+	go = 1;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			wait(c);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+	go = 0;
+	return 0;
+}
+
+thread T {};
+void ^?{}( T & mutex this ) {}
+void main( T & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(m1, m2, m3, m4); }
+
+}
+
+int main(int margc, char* margv[]) {
+	argc = margc;
+	argv = margv;
+	T t;
+	return wait(m1, m2, m3, m4);
+}
Index: libcfa/src/Makefile.in
===================================================================
--- libcfa/src/Makefile.in	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ libcfa/src/Makefile.in	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -415,4 +415,5 @@
 am__v_GOC_0 = @echo "  GOC     " $@;
 am__v_GOC_1 = 
+UPPCC = u++
 UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
 AM_V_UPP = $(am__v_UPP_@AM_V@)
Index: src/cfa.make
===================================================================
--- src/cfa.make	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ src/cfa.make	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -32,5 +32,5 @@
 am__v_GOC_1 =
 
-
+UPPCC = u++
 UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
 
Index: tests/Makefile.in
===================================================================
--- tests/Makefile.in	(revision c47ca77243c0102f61748152ffb4a492ff8a6cbb)
+++ tests/Makefile.in	(revision c3e1c9e3e351f55e915d5b8fed23e11e287cf7c0)
@@ -350,4 +350,5 @@
 am__v_GOC_0 = @echo "  GOC     " $@;
 am__v_GOC_1 = 
+UPPCC = u++
 UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
 AM_V_UPP = $(am__v_UPP_@AM_V@)
