Index: libcfa/src/enum.cfa
===================================================================
--- libcfa/src/enum.cfa	(revision 5eb3f65e95375f1be49b0bbe3338a9b4b1d26c67)
+++ libcfa/src/enum.cfa	(revision 55ba259e5caba35d6cde03fc3df5cefc7127dbb2)
@@ -4,19 +4,24 @@
 #pragma GCC visibility push(default)
 
-forall(ostype & | basic_ostream(ostype), E, V| CfaEnum(E, V))
-ostype & ?|?(ostype& os, E e) {
-    return os | type_name(e) | "." | label(e);
+forall( ostype & | basic_ostream(ostype), E, V | CfaEnum(E, V) ) {
+	ostype & ?|?( ostype& os, E e ) {
+//		if ( scoped( e ) ) os | type_name( e ) | '.' | nonl;
+		return os | label( e );
+	}
+	OSTYPE_VOID_IMPL( E )
 }
 
-forall(ostype & | basic_ostream(ostype), E| CfaEnum(E, quasi_void))
-ostype & ?|?(ostype& os, E e) {
-    return os | type_name(e) | "." | label(e);
+// forall( ostype & | basic_ostream(ostype), E | CfaEnum(E, quasi_void) )
+// ostype & ?|?( ostype & os, E e ) {
+// //    return os | type_name(e) | "." | label(e);
+//     return os | label( e );
+// }
+
+forall( E, V | CfaEnum(E, V) ) {						// relational operators
+    int ?==?(E l, E r) { return posn(l) == posn(r); }
+    int ?!=?(E l, E r) { return posn(l) != posn(r); }
+    int ?<?(E l, E r) { return posn(l) < posn(r); }
+    int ?<=?(E l, E r) { return posn(l) <= posn(r); }
+    int ?>?(E l, E r) { return posn(l) > posn(r); }
+    int ?>=?(E l, E r) { return posn(l) >= posn(r); }
 }
-
-forall(ostype & | basic_ostream(ostype), E, V| CfaEnum(E, V)) {
-    int ?==?(E l, E r) { return posn(l) == posn(r); }
-    int ?<=?(E l, E r) { return posn(l) <= posn(r); }
-    int ?>=?(E l, E r) { return posn(l) >= posn(r); }
-    int ?<?(E l, E r) { return posn(l) < posn(r); }
-    int ?>?(E l, E r) { return posn(l) > posn(r); }
-}
Index: libcfa/src/enum.hfa
===================================================================
--- libcfa/src/enum.hfa	(revision 5eb3f65e95375f1be49b0bbe3338a9b4b1d26c67)
+++ libcfa/src/enum.hfa	(revision 55ba259e5caba35d6cde03fc3df5cefc7127dbb2)
@@ -3,29 +3,34 @@
 #include "iostream.hfa"
 
-forall(E) trait Bounded {
+forall( E ) trait Bounded {
     E lowerBound();
     E upperBound();
 };
 
-forall(E | Bounded(E)) trait Serial {
-    unsigned fromInstance(E e);
-    E fromInt(unsigned i);
-    E succ(E e);
-    E pred(E e);
+forall( E | Bounded(E) ) trait Serial {
+    unsigned fromInstance( E e );
+    E fromInt( unsigned i );
+    E succ( E e );
+    E pred( E e );
 };
 
 // Design one
-forall(E, V | Serial(E)) trait CfaEnum {
-    char * label(E e);
-    unsigned int posn(E e);
-    V value(E e);
-    char * type_name(E e);
+forall( E, V | Serial(E) ) trait CfaEnum {
+    char * label( E e );
+    unsigned int posn( E e );
+    V value( E e );
+    char * type_name( E e );
+//    bool scoped( E e );
 };
 
-forall(ostype & | basic_ostream(ostype), E, V | CfaEnum(E, V))
-ostype & ?|?(ostype&, E);
+// I/O
 
-forall(ostype & | basic_ostream(ostype), E| CfaEnum(E, quasi_void))
-ostype & ?|?(ostype&, E);
+forall( ostype & | basic_ostream(ostype), E, V | CfaEnum(E, V) ) {
+	ostype & ?|?( ostype &, E );
+	OSTYPE_VOID( E );
+}
+
+//forall( ostype & | basic_ostream(ostype), E | CfaEnum(E, quasi_void) )
+//ostype & ?|?( ostype &, E );
 
 // Design two <- should go for this if we have change the cost model
@@ -39,12 +44,10 @@
 // };
 
-forall(ostype & | basic_ostream(ostype), E, V| CfaEnum(E, V)) {
+forall( E, V | CfaEnum(E, V) ) {						// relational operators
     int ?==?(E, E);
+    int ?!=?(E, E);
+    int ?<?(E, E);
     int ?<=?(E, E);
+    int ?>?(E, E);
     int ?>=?(E, E);
-    int ?<?(E, E);
-    int ?>?(E, E);
-
-	// E ++?( E & lhs );
-	// E ?++( E & lhs );
 }
