Index: libcfa/src/enum.cfa
===================================================================
--- libcfa/src/enum.cfa	(revision 09dd830d5391f11b3366f154f50709112d1ab25f)
+++ libcfa/src/enum.cfa	(revision 68ea8d208b6ee1a76e030b1697eecadeb86f4f63)
@@ -37,5 +37,5 @@
 }
 
-forall( istype & | istream( istype ), E | CfaEnum( E ) )
+forall( istype & | istream( istype ), E | CfaEnum( E )| Serial(E) )
 istype & ?|?( istype & is, E & e ) {
 //	fprintf( stderr, "here0\n" );
Index: libcfa/src/enum.hfa
===================================================================
--- libcfa/src/enum.hfa	(revision 09dd830d5391f11b3366f154f50709112d1ab25f)
+++ libcfa/src/enum.hfa	(revision 68ea8d208b6ee1a76e030b1697eecadeb86f4f63)
@@ -34,5 +34,5 @@
 // };
 
-forall( E | Serial( E ) ) trait CfaEnum {
+forall( E ) trait CfaEnum {
     const char * label( E e );
     unsigned int posn( E e );
@@ -45,5 +45,5 @@
 // I/O
 
-forall( istype & | istream( istype ), E | CfaEnum( E ) )
+forall( istype & | istream( istype ), E | CfaEnum( E ) | Serial(E) )
 istype & ?|?( istype &, E & );
 
@@ -54,5 +54,5 @@
 
 static inline
-forall( E | CfaEnum( E ) ) {
+forall( E | Serial(E) | CfaEnum(E) ) {
     int ?==?( E l, E r ) { return posn( l ) == posn( r ); }	// relational operators
     int ?!=?( E l, E r ) { return posn( l ) != posn( r ); }
