Index: Jenkinsfile
===================================================================
--- Jenkinsfile	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ Jenkinsfile	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -227,8 +227,8 @@
 	switch( arch ) {
 		case 'x64':
-			return '--host=x86_64 CXXFLAGS="-m64" CFAFLAGS="-m64"'
+			return '--host=x86_64'
 		break
 		case 'x86':
-			return '--host=i386   CXXFLAGS="-m32" CFAFLAGS="-m32"'
+			return '--host=i386'
 		break
 		default :
Index: configure
===================================================================
--- configure	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ configure	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -644,4 +644,5 @@
 CXXFLAGS
 CXX
+CFA_FLAGS
 MACHINE_TYPE
 host_os
@@ -653,5 +654,4 @@
 build_cpu
 build
-CFA_FLAGS
 CFA_LIBDIR
 CFA_BINDIR
@@ -3005,24 +3005,11 @@
 
 # Allow program name tansformation
-# will fille program_transform_name with appropriate sed regex
-
-#autoconf escapes $ and \ since automake wiill un-escape them.
-#Since we need to use the sed transform in autoconf we need to manualy un-escape these characters
-name_transform=`echo ${program_transform_name} | sed 's/\\$\\$/\\$/g' | sed 's/\\\\\\\/\\\/g'`
-cfa_name=`echo cfa | sed ${name_transform}`
-cc1_name=`echo cc1 | sed ${name_transform}`
-cpp_name=`echo cfa-cpp | sed ${name_transform}`
+# will fill program_transform_name with appropriate sed regex
+
 
 #Trasforming cc1 will break compilation
-if ! test "${cc1_name}" = "cc1"; then
-    as_fn_error $? "Program transform must not modify cc1.
-		--program-sufix and --program-prefix not supported.
-		Use -program-transform-name='s/cfa$/[Desired name here]/' instead" "$LINENO" 5
-fi
-#We could support transforming cfa-cpp but since it is located in a unique subfolder we don't need to
-if ! test "${cpp_name}" = "cfa-cpp"; then
-    as_fn_error $? "Program transform must not modify cfa-cpp.
-		--program-sufix and --program-prefix not supported.
-		Use -program-transform-name='s/cfa$/[Desired name here]/' instead" "$LINENO" 5
+if test "${program_transform_name}" = ""; then
+    as_fn_error $? "Program transform not supported.
+		Use --with-cfa-name='[Desired name here]' instead" "$LINENO" 5
 fi
 
@@ -3315,12 +3302,4 @@
 
 
-
-cat >>confdefs.h <<_ACEOF
-#define CFA_FLAGS "${CFAFLAGS}"
-_ACEOF
-
-CFA_FLAGS=${CFAFLAGS}
-
-
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
@@ -3395,4 +3374,35 @@
 
 MACHINE_TYPE=$host_cpu
+
+
+if ! test "$host_cpu" = "$build_cpu"; then
+	case $host_cpu in
+		i386)
+			CFLAGS+="-m32"
+			CXXFLAGS+="-m32"
+			CFAFLAGS+="-m32"
+			LDFLAGS+="-m32"
+			;;
+		i686)
+			CFLAGS+="-m32"
+                        CXXFLAGS+="-m32"
+                        CFAFLAGS+="-m32"
+                        LDFLAGS+="-m32"
+			;;
+		x86_64)
+			CFLAGS+="-m64"
+                        CXXFLAGS+="-m64"
+                        CFAFLAGS+="-m64"
+                        LDFLAGS+="-m64"
+			;;
+	esac
+fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define CFA_FLAGS "${CFAFLAGS}"
+_ACEOF
+
+CFA_FLAGS=${CFAFLAGS}
 
 
Index: configure.ac
===================================================================
--- configure.ac	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ configure.ac	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -23,5 +23,5 @@
 
 #Trasforming cc1 will break compilation
-if ! test "${program_transform_name}" = ""; then
+if test "${program_transform_name}" = ""; then
     AC_MSG_ERROR([Program transform not supported.
 		Use --with-cfa-name='[[Desired name here]]' instead])
@@ -169,9 +169,33 @@
 AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
 
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_SUBST([MACHINE_TYPE],[$host_cpu])
+
+if ! test "$host_cpu" = "$build_cpu"; then 
+	case $host_cpu in
+		i386)
+			CFLAGS+="-m32"
+			CXXFLAGS+="-m32"
+			CFAFLAGS+="-m32"
+			LDFLAGS+="-m32"
+			;;
+		i686)
+			CFLAGS+="-m32"
+                        CXXFLAGS+="-m32"
+                        CFAFLAGS+="-m32"
+                        LDFLAGS+="-m32"
+			;;
+		x86_64)
+			CFLAGS+="-m64"
+                        CXXFLAGS+="-m64"
+                        CFAFLAGS+="-m64"
+                        LDFLAGS+="-m64"
+			;;
+	esac
+fi
+
 AC_DEFINE_UNQUOTED(CFA_FLAGS, "${CFAFLAGS}", [compilation flags for cfa libraries and test programs.])
 AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
-
-AC_CANONICAL_HOST
-AC_SUBST([MACHINE_TYPE],[$host_cpu])
 
 # Checks for programs.
Index: src/Concurrency/module.mk
===================================================================
--- src/Concurrency/module.mk	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
+++ src/Concurrency/module.mk	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -0,0 +1,18 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+##
+## 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.
+##
+## module.mk -- 
+##
+## Author           : Thierry Delisle
+## Created On       : Mon Mar 13 12:48:40 2017
+## Last Modified By : 
+## Last Modified On : 
+## Update Count     : 0
+###############################################################################
+
+SRC += Concurrency/Keywords.cc 
+
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/Makefile.am	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -27,4 +27,5 @@
 include CodeGen/module.mk
 include CodeTools/module.mk
+include Concurrency/module.mk
 include Common/module.mk
 include ControlStruct/module.mk
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/Makefile.in	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -24,4 +24,7 @@
 #SRC +=  ArgTweak/Rewriter.cc \
 #	ArgTweak/Mutate.cc
+
+######################### -*- Mode: Makefile-Gmake -*- ########################
+###############################################################################
 
 ######################### -*- Mode: Makefile-Gmake -*- ########################
@@ -76,4 +79,5 @@
 DIST_COMMON = $(srcdir)/CodeGen/module.mk \
 	$(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk \
+	$(srcdir)/Concurrency/module.mk \
 	$(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \
 	$(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.am \
@@ -104,4 +108,5 @@
 	CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) \
 	CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT) \
+	Concurrency/driver_cfa_cpp-Keywords.$(OBJEXT) \
 	Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
 	Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
@@ -383,6 +388,6 @@
 	CodeGen/FixNames.cc CodeGen/FixMain.cc \
 	CodeGen/OperatorTable.cc CodeTools/DeclStats.cc \
-	Common/SemanticError.cc Common/UniqueName.cc \
-	Common/DebugMalloc.cc Common/Assert.cc \
+	Concurrency/Keywords.cc Common/SemanticError.cc \
+	Common/UniqueName.cc Common/DebugMalloc.cc Common/Assert.cc \
 	ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
 	ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
@@ -447,5 +452,5 @@
 .SUFFIXES:
 .SUFFIXES: .cc .ll .o .obj .yy
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -468,5 +473,5 @@
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:
+$(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -541,4 +546,13 @@
 CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT):  \
 	CodeTools/$(am__dirstamp) CodeTools/$(DEPDIR)/$(am__dirstamp)
+Concurrency/$(am__dirstamp):
+	@$(MKDIR_P) Concurrency
+	@: > Concurrency/$(am__dirstamp)
+Concurrency/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) Concurrency/$(DEPDIR)
+	@: > Concurrency/$(DEPDIR)/$(am__dirstamp)
+Concurrency/driver_cfa_cpp-Keywords.$(OBJEXT):  \
+	Concurrency/$(am__dirstamp) \
+	Concurrency/$(DEPDIR)/$(am__dirstamp)
 Common/$(am__dirstamp):
 	@$(MKDIR_P) Common
@@ -833,4 +847,5 @@
 	-rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT)
 	-rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT)
+	-rm -f Concurrency/driver_cfa_cpp-Keywords.$(OBJEXT)
 	-rm -f ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT)
 	-rm -f ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT)
@@ -943,4 +958,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po@am__quote@
@@ -1179,4 +1195,18 @@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`
 
+Concurrency/driver_cfa_cpp-Keywords.o: Concurrency/Keywords.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Concurrency/driver_cfa_cpp-Keywords.o -MD -MP -MF Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Tpo -c -o Concurrency/driver_cfa_cpp-Keywords.o `test -f 'Concurrency/Keywords.cc' || echo '$(srcdir)/'`Concurrency/Keywords.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Tpo Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Concurrency/Keywords.cc' object='Concurrency/driver_cfa_cpp-Keywords.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Concurrency/driver_cfa_cpp-Keywords.o `test -f 'Concurrency/Keywords.cc' || echo '$(srcdir)/'`Concurrency/Keywords.cc
+
+Concurrency/driver_cfa_cpp-Keywords.obj: Concurrency/Keywords.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Concurrency/driver_cfa_cpp-Keywords.obj -MD -MP -MF Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Tpo -c -o Concurrency/driver_cfa_cpp-Keywords.obj `if test -f 'Concurrency/Keywords.cc'; then $(CYGPATH_W) 'Concurrency/Keywords.cc'; else $(CYGPATH_W) '$(srcdir)/Concurrency/Keywords.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Tpo Concurrency/$(DEPDIR)/driver_cfa_cpp-Keywords.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Concurrency/Keywords.cc' object='Concurrency/driver_cfa_cpp-Keywords.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Concurrency/driver_cfa_cpp-Keywords.obj `if test -f 'Concurrency/Keywords.cc'; then $(CYGPATH_W) 'Concurrency/Keywords.cc'; else $(CYGPATH_W) '$(srcdir)/Concurrency/Keywords.cc'; fi`
+
 Common/driver_cfa_cpp-SemanticError.o: Common/SemanticError.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
@@ -2666,4 +2696,6 @@
 	-rm -f Common/$(DEPDIR)/$(am__dirstamp)
 	-rm -f Common/$(am__dirstamp)
+	-rm -f Concurrency/$(DEPDIR)/$(am__dirstamp)
+	-rm -f Concurrency/$(am__dirstamp)
 	-rm -f ControlStruct/$(DEPDIR)/$(am__dirstamp)
 	-rm -f ControlStruct/$(am__dirstamp)
@@ -2697,5 +2729,5 @@
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) Concurrency/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
@@ -2743,5 +2775,5 @@
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) Concurrency/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/Parser/DeclarationNode.cc	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  7 08:02:09 2017
-// Update Count     : 936
+// Last Modified On : Tue Mar  7 17:28:56 2017
+// Update Count     : 937
 //
 
@@ -359,5 +359,9 @@
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::Pointer );
-	return newnode->addQualifiers( qualifiers );
+	if ( qualifiers ) {
+		return newnode->addQualifiers( qualifiers );
+	} else {
+		return newnode;
+	} // if
 } // DeclarationNode::newPointer
 
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/Parser/TypeData.h	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  7 08:03:53 2017
-// Update Count     : 173
+// Last Modified On : Wed Mar  8 22:28:33 2017
+// Update Count     : 174
 //
 
@@ -76,19 +76,19 @@
 	DeclarationNode::Length length = DeclarationNode::NoLength;
 	DeclarationNode::BuiltinType builtintype = DeclarationNode::NoBuiltinType;
+
 	typedef std::bitset< DeclarationNode::NoTypeQualifier > TypeQualifiers;
 	TypeQualifiers typeQualifiers;
 	DeclarationNode * forall;
 
-		// Basic_t basic;
-		Aggregate_t aggregate;
-		AggInst_t aggInst;
-		Array_t array;
-		Enumeration_t enumeration;
-		// Variable_t variable;
-		Function_t function;
-		Symbolic_t symbolic;
-		DeclarationNode * tuple;
-		ExpressionNode * typeexpr;
-		// DeclarationNode::BuiltinType builtin;
+	// Basic_t basic;
+	Aggregate_t aggregate;
+	AggInst_t aggInst;
+	Array_t array;
+	Enumeration_t enumeration;
+	// Variable_t variable;
+	Function_t function;
+	Symbolic_t symbolic;
+	DeclarationNode * tuple;
+	ExpressionNode * typeexpr;
 
 	TypeData( Kind k = Unknown );
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/Parser/lex.ll	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Fri Mar  3 22:18:00 2017
- * Update Count     : 502
+ * Last Modified On : Thu Mar  9 21:38:26 2017
+ * Update Count     : 505
  */
 
@@ -202,4 +202,5 @@
 __const__		{ KEYWORD_RETURN(CONST); }				// GCC
 continue		{ KEYWORD_RETURN(CONTINUE); }
+_Coroutine		{ KEYWORD_RETURN(COROUTINE); }			// CFA
 default			{ KEYWORD_RETURN(DEFAULT); }
 disable			{ KEYWORD_RETURN(DISABLE); }			// CFA
@@ -235,4 +236,5 @@
 long			{ KEYWORD_RETURN(LONG); }
 lvalue			{ KEYWORD_RETURN(LVALUE); }				// CFA
+_Monitor		{ KEYWORD_RETURN(MONITOR); }			// CFA
 mutex			{ KEYWORD_RETURN(MUTEX); }				// CFA
 _Noreturn		{ KEYWORD_RETURN(NORETURN); }			// C11
@@ -254,4 +256,5 @@
 struct			{ KEYWORD_RETURN(STRUCT); }
 switch			{ KEYWORD_RETURN(SWITCH); }
+_Thread			{ KEYWORD_RETURN(THREAD); }				// C11
 _Thread_local	{ KEYWORD_RETURN(THREADLOCAL); }		// C11
 throw			{ KEYWORD_RETURN(THROW); }				// CFA
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/Parser/parser.yy	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Mar  5 15:48:24 2017
-// Update Count     : 2227
+// Last Modified On : Thu Mar  9 21:40:20 2017
+// Update Count     : 2292
 //
 
@@ -104,4 +104,5 @@
 %token TYPEOF LABEL										// GCC
 %token ENUM STRUCT UNION
+%token COROUTINE MONITOR THREAD							// CFA
 %token OTYPE FTYPE DTYPE TTYPE TRAIT					// CFA
 %token SIZEOF OFFSETOF
@@ -223,6 +224,6 @@
 %type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr
 
-%type<decl> identifier_parameter_array identifier_parameter_declarator identifier_parameter_function
-%type<decl> identifier_parameter_ptr identifier_list
+%type<decl> identifier_parameter_declarator identifier_parameter_ptr identifier_parameter_array identifier_parameter_function
+%type<decl> identifier_list
 
 %type<decl> cfa_abstract_array cfa_abstract_declarator_no_tuple cfa_abstract_declarator_tuple
@@ -270,5 +271,6 @@
 %type<en> type_name_list
 
-%type<decl> type_qualifier type_qualifier_name type_qualifier_list type_qualifier_list_opt type_specifier type_specifier_nobody
+%type<decl> type_qualifier type_qualifier_name type_qualifier_list_opt type_qualifier_list
+%type<decl> type_specifier type_specifier_nobody
 
 %type<decl> variable_declarator variable_ptr variable_array variable_function
@@ -1629,4 +1631,10 @@
 	| UNION
 		{ $$ = DeclarationNode::Union; }
+	| COROUTINE
+		{ $$ = DeclarationNode::Struct; }
+	| MONITOR
+		{ $$ = DeclarationNode::Struct; }
+	| THREAD
+		{ $$ = DeclarationNode::Struct; }
 	;
 
Index: src/libcfa/concurrency/CtxSwitch-i386.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-i386.S	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/libcfa/concurrency/CtxSwitch-i386.S	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -52,4 +52,10 @@
 	movl 4(%esp),%eax
 
+	// Save floating & SSE control words on the stack.
+
+        sub    $8,%esp
+        stmxcsr 0(%esp)         // 4 bytes
+        fnstcw  4(%esp)         // 2 bytes
+
 	// Save volatile registers on the stack.
 
@@ -69,5 +75,5 @@
 	// argument is now at 8 + 12 = 20(%esp)
 
-	movl 20(%esp),%eax
+	movl 28(%esp),%eax
 
 	// Load new context from the "to" area.
@@ -81,4 +87,10 @@
 	popl %edi
 	popl %ebx
+
+	// Load floating & SSE control words from the stack.
+
+        fldcw   4(%esp)
+        ldmxcsr 0(%esp)
+        add    $8,%esp
 
 	// Return to thread.
Index: src/libcfa/concurrency/CtxSwitch-x86_64.S
===================================================================
--- src/libcfa/concurrency/CtxSwitch-x86_64.S	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/libcfa/concurrency/CtxSwitch-x86_64.S	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -47,9 +47,12 @@
 CtxSwitch:
 
-	// Save volatile registers on the stack.
+	// Save floating & SSE control words on the stack.
 
 	subq   $8,%rsp
 	stmxcsr 0(%rsp)         // 4 bytes
 	fnstcw  4(%rsp)         // 2 bytes
+
+	// Save volatile registers on the stack.
+
 	pushq %r15
 	pushq %r14
@@ -75,7 +78,10 @@
 	popq %r14
 	popq %r15
+
+	// Load floating & SSE control words from the stack.
+
 	fldcw   4(%rsp)
 	ldmxcsr 0(%rsp)
-	addq $8,%rsp
+	addq   $8,%rsp
 
 	// Return to thread.
Index: src/libcfa/concurrency/invoke.c
===================================================================
--- src/libcfa/concurrency/invoke.c	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/libcfa/concurrency/invoke.c	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -91,5 +91,7 @@
 	struct FakeStack {
 	    void *fixedRegisters[3];		  	// fixed registers ebx, edi, esi (popped on 1st uSwitch, values unimportant)
-	    void *rturn;				      // where to go on return from uSwitch
+	    uint32_t mxcr;                              // SSE Status and Control bits (control bits are preserved across function calls)
+            uint16_t fcw;                               // X97 FPU control word (preserved across function calls)
+	    void *rturn;                                // where to go on return from uSwitch
 	    void *dummyReturn;				// fake return compiler would have pushed on call to uInvoke
 	    void *argument[3];				// for 16-byte ABI, 16-byte alignment starts here
@@ -108,7 +110,7 @@
       struct FakeStack {
             void *fixedRegisters[5];			// fixed registers rbx, r12, r13, r14, r15
-            uint32_t mxcr;			            // SSE Status and Control bits (control bits are preserved across function calls)
-            uint16_t fcw;			            // X97 FPU control word (preserved across function calls)
-            void *rturn;				      // where to go on return from uSwitch
+            uint32_t mxcr;                              // SSE Status and Control bits (control bits are preserved across function calls)
+            uint16_t fcw;                               // X97 FPU control word (preserved across function calls)
+            void *rturn;                                // where to go on return from uSwitch
             void *dummyReturn;				// NULL return address to provide proper alignment
       };
Index: src/libcfa/fstream
===================================================================
--- src/libcfa/fstream	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/libcfa/fstream	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 28 08:08:04 2016
-// Update Count     : 88
+// Last Modified On : Tue Mar  7 14:48:08 2017
+// Update Count     : 91
 //
 
@@ -23,5 +23,5 @@
 	void *file;
 	_Bool sepDefault;
-	int sepOnOff;										// FIX ME: type should be _Bool
+	_Bool sepOnOff;
 	char separator[separateSize];
 }; // ofstream
@@ -32,8 +32,9 @@
 void sepReset( ofstream * );
 void sepReset( ofstream *, _Bool );
+const char * sepGet( ofstream * );
 void sepSet( ofstream *, const char * );
-const char * sepGet( ofstream * );
 _Bool sepDisable( ofstream * );
 _Bool sepEnable( ofstream * );
+
 int fail( ofstream * );
 int flush( ofstream * );
Index: src/libcfa/fstream.c
===================================================================
--- src/libcfa/fstream.c	(revision 031a2c954f0d604989dfcfaf7e59b39f4a3c0c8c)
+++ src/libcfa/fstream.c	(revision 8ef9c5e7c34b1c5ff8f0ceff99f5b33aa922b62c)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 15 13:35:29 2016
-// Update Count     : 188
+// Last Modified On : Tue Mar  7 14:48:09 2017
+// Update Count     : 192
 //
 
@@ -21,4 +21,5 @@
 #include <stdarg.h>										// varargs
 #include <string.h>										// strlen
+#include <stdbool.h>									// true/false
 #include <float.h>										// DBL_DIG, LDBL_DIG
 #include <complex.h>									// creal, cimag
@@ -32,18 +33,21 @@
 void sepReset( ofstream * os ) { os->sepOnOff = os->sepDefault; }
 void sepReset( ofstream * os, _Bool reset ) { os->sepDefault = reset; os->sepOnOff = os->sepDefault; }
+const char * sepGet( ofstream * os ) { return &(os->separator[0]); }
+
 void sepSet( ofstream * os, const char * s ) {
 	strncpy( &(os->separator[0]), s, separateSize - 1 );
 	os->separator[separateSize - 1] = '\0';
 } // sepSet
-const char * sepGet( ofstream * os ) { return &(os->separator[0]); }
+
 _Bool sepDisable( ofstream *os ) {
 	_Bool temp = os->sepDefault;
-	os->sepDefault = 0;
+	os->sepDefault = false;
 	sepReset( os );
 	return temp;
 } // sepDisable
+
 _Bool sepEnable( ofstream *os ) {
 	_Bool temp = os->sepDefault;
-	os->sepDefault = 1;
+	os->sepDefault = true;
 	sepReset( os );
 	return temp;
