Index: libcfa/prelude/prelude-gen.cc
===================================================================
--- libcfa/prelude/prelude-gen.cc	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
+++ libcfa/prelude/prelude-gen.cc	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -1,2 +1,17 @@
+// 
+// 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.
+// 
+// prelude-gen.cc -- 
+// 
+// Author           : Rob Schluntz and Thierry Delisle
+// Created On       : Sat Feb 16 08:44:58 2019
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon Feb 18 09:47:33 2019
+// Update Count     : 22
+// 
+
 #include <algorithm>
 #include <array>
@@ -11,7 +26,7 @@
 	bool hasComparison;
 } basicTypes[] = {
-	// { "char"                  , false, true , },
-	// { "signed char"           , false, true , },
-	// { "unsigned char"         , false, true , },
+	{ "char"                  , false, true , },
+	{ "signed char"           , false, true , },
+	{ "unsigned char"         , false, true , },
 	{ "signed short"          , false, true , },
 	{ "unsigned short"        , false, true , },
@@ -150,7 +165,7 @@
 	cout << endl;
 
-	cout << "signed int ?==?( zero_t, zero_t ),							?!=?( zero_t, zero_t );" << endl;
-	cout << "signed int ?==?( one_t, one_t ),							?!=?( one_t, one_t );" << endl;
-	cout << "signed int ?==?( _Bool, _Bool ),							?!=?( _Bool, _Bool );" << endl;
+	cout << "signed int ?==?( zero_t, zero_t ),	?!=?( zero_t, zero_t );" << endl;
+	cout << "signed int ?==?( one_t, one_t ),	?!=?( one_t, one_t );" << endl;
+	cout << "signed int ?==?( _Bool, _Bool ),	?!=?( _Bool, _Bool );" << endl;
 	cout << "signed int !?( _Bool );" << endl;
 
@@ -188,13 +203,15 @@
 	cout << "// Arithmetic Constructors //" << endl;
 	cout << "/////////////////////////////" << endl;
+	cout << endl;
+
 	auto otype = [](const std::string & type, bool do_volatile = false) {
-		cout << "void \t?{} ( " << type << " & );" << endl;
-		cout << "void \t?{} ( " << type << " &, " << type << " );" << endl;
-		cout << type << " \t?=? ( " << type << " &, " << type << " )";
-		if( do_volatile ) {
-			cout << ", \t?=?( volatile " << type << " &, " << type << " )";
+		cout << "void ?{} (" << type << " &);" << endl;
+		cout << "void ?{} (" << type << " &, " << type << ");" << endl;
+		cout << type << "  ?=? (" << type << " &, " << type << ")";
+		if ( do_volatile ) {
+			cout << ",  ?=?(volatile " << type << " &, " << type << ")";
 		}
 		cout << ";" << endl;
-		cout << "void \t^?{}( " << type << " & );" << endl;
+		cout << "void ^?{}( " << type << " & );" << endl;
 	};
 
@@ -202,11 +219,10 @@
 	otype("one_t");
 	otype("_Bool", true);
-	otype("char", true);
-	otype("signed char", true);
-	otype("unsigned char", true);
+	cout << endl;
 
 	for (auto type : basicTypes) {
-		cout << "void  ?{}(" << type.name << " &);" << endl;
-		cout << "void  ?{}(" << type.name << " &, " << type.name << ");" << endl;
+		cout << "void ?{}(" << type.name << " &);" << endl;
+		cout << "void ?{}(" << type.name << " &, " << type.name << ");" << endl;
+		cout << "void ?{}(" << type.name << " &, zero_t);" << endl;
 		cout << "void ^?{}(" << type.name << " &);" << endl;
 		cout << endl;
@@ -217,6 +233,8 @@
 	cout << "// Pointer Constructors //" << endl;
 	cout << "//////////////////////////" << endl;
-	cout << "forall(ftype FT) void  ?{}( FT *&, FT * );" << endl;
-	cout << "forall(ftype FT) void  ?{}( FT * volatile &, FT * );" << endl;
+	cout << endl;
+
+	cout << "forall(ftype FT) void ?{}( FT *&, FT * );" << endl;
+	cout << "forall(ftype FT) void ?{}( FT * volatile &, FT * );" << endl;
 
 	// generate qualifiers
@@ -242,10 +260,10 @@
 		for (auto cvq : qualifiersPair) {
 			for (auto is_vol : { "        ", "volatile" }) {
-				cout << "forall(dtype DT) void  ?{}(" << cvq.first << type << " * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
+				cout << "forall(dtype DT) void ?{}(" << cvq.first << type << " * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
 			}
 		}
 		for (auto cvq : qualifiersSingle) {
 			for (auto is_vol : { "        ", "volatile" }) {
-				cout << "forall(dtype DT) void  ?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
+				cout << "forall(dtype DT) void ?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
 			}
 			for (auto is_vol : { "        ", "volatile" }) {
@@ -386,2 +404,6 @@
 	cout << endl;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: libcfa/src/containers/maybe.cfa
===================================================================
--- libcfa/src/containers/maybe.cfa	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
+++ libcfa/src/containers/maybe.cfa	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 24 15:40:00 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:23:50 2017
-// Update Count     : 2
+// Last Modified On : Sun Feb 17 11:22:03 2019
+// Update Count     : 3
 //
 
@@ -39,5 +39,5 @@
 forall(otype T)
 maybe(T) ?=?(maybe(T) & this, maybe(T) that) {
-	if (this.has_value & that.has_value) {
+	if (this.has_value && that.has_value) {
 		this.value = that.value;
 	} else if (this.has_value) {
Index: libcfa/src/containers/result.cfa
===================================================================
--- libcfa/src/containers/result.cfa	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
+++ libcfa/src/containers/result.cfa	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 24 15:40:00 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 20 15:23:58 2017
-// Update Count     : 2
+// Last Modified On : Sun Feb 17 11:24:04 2019
+// Update Count     : 3
 //
 
@@ -48,5 +48,5 @@
 forall(otype T, otype E)
 result(T, E) ?=?(result(T, E) & this, result(T, E) that) {
-	if (this.has_value & that.has_value) {
+	if (this.has_value && that.has_value) {
 		this.value = that.value;
 	} else if (this.has_value) {
Index: tests/.expect/declarationSpecifier.x64.txt
===================================================================
--- tests/.expect/declarationSpecifier.x64.txt	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
+++ tests/.expect/declarationSpecifier.x64.txt	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -689,5 +689,5 @@
 signed int _X4mainFi_iPPKc__1(signed int _X4argci_1, const char **_X4argvPPKc_1){
     __attribute__ ((unused)) signed int _X12_retval_maini_1;
-    ((void)(_X12_retval_maini_1=((signed int )0)) /* ?{} */);
+    ((void)(_X12_retval_maini_1=0) /* ?{} */);
     return _X12_retval_maini_1;
     ((void)(_X12_retval_maini_1=0) /* ?{} */);
Index: tests/.expect/gccExtensions.x64.txt
===================================================================
--- tests/.expect/gccExtensions.x64.txt	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
+++ tests/.expect/gccExtensions.x64.txt	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -162,5 +162,5 @@
     signed int _X2m2A0A0i_2[((unsigned long int )10)][((unsigned long int )10)];
     signed int _X2m3A0A0i_2[((unsigned long int )10)][((unsigned long int )10)];
-    ((void)(_X12_retval_maini_1=((signed int )0)) /* ?{} */);
+    ((void)(_X12_retval_maini_1=0) /* ?{} */);
     return _X12_retval_maini_1;
     ((void)(_X12_retval_maini_1=0) /* ?{} */);
Index: tests/.expect/sum.txt
===================================================================
--- tests/.expect/sum.txt	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
+++ tests/.expect/sum.txt	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -1,2 +1,4 @@
+sum from 5 to 15 is 95, check 95
+sum from 5 to 15 is 95, check 95
 sum from 5 to 15 is 95, check 95
 sum from 5 to 15 is 95, check 95
Index: tests/sum.cfa
===================================================================
--- tests/sum.cfa	(revision ada45751af7e9dc611837c36dfe404dc3c5e4b52)
+++ tests/sum.cfa	(revision ee06e41b1fa691fcca2f7a049a4e78f264265897)
@@ -11,6 +11,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Feb  9 15:38:48 2019
-// Update Count     : 293
+// Last Modified On : Sun Feb 17 22:54:16 2019
+// Update Count     : 328
 //
 
@@ -34,26 +34,30 @@
 } // sum
 
-// Not in prelude.
-unsigned char ?+?( unsigned char t1, unsigned char t2 ) { return (int)t1 + t2; } // cast forces integer addition, otherwise recursion
-unsigned char ?+=?( unsigned char & t1, unsigned char t2 ) { t1 = t1 + t2; return t1; }
-unsigned char ++?( unsigned char & t ) { t += 1; return t; }
-unsigned char ?++( unsigned char & t ) { unsigned char temp = t; t += 1; return temp; }
-
-// Not in prelude.
-void ?{}( unsigned char & c, zero_t ) { c = 0; }
-void ?{}( int & i, zero_t ) { i = 0; }
-void ?{}( float & f, zero_t ) { f = 0.0; }
-void ?{}( double & d, zero_t ) { d = 0.0; }
-
 int main( void ) {
 	const int low = 5, High = 15, size = High - low;
 
-	unsigned char s = 0, a[size], v = (char)low;
-	for ( int i = 0; i < size; i += 1, v += 1 ) {
+	signed char s = 0, a[size], v = (char)low;
+	for ( int i = 0; i < size; i += 1, v += 1hh ) {
 		s += v;
 		a[i] = v;
 	} // for
 	sout | "sum from" | low | "to" | High | "is"
-		 | sum( size, (unsigned char *)a ) | ", check" | (int)s;
+		 | sum( size, (signed char *)a ) | ", check" | (int)s;
+
+	unsigned char s = 0, a[size], v = low;
+	for ( int i = 0; i < size; i += 1, v += 1hhu ) {
+		s += (unsigned char)v;
+		a[i] = (unsigned char)v;
+	} // for
+	sout | "sum from" | low | "to" | High | "is"
+		 | sum( size, (unsigned char *)a ) | ", check" | (unsigned char)s;
+
+	short int s = 0, a[size], v = low;
+	for ( int i = 0; i < size; i += 1, v += 1h ) {
+	 	s += (short int)v;
+	 	a[i] = (short int)v;
+	} // for
+	sout | "sum from" | low | "to" | High | "is"
+		 | sum( size, (short int *)a ) | ", check" | (short int)s;
 
 	int s = 0, a[size], v = low;
