Index: libcfa/prelude/builtins.c
===================================================================
--- libcfa/prelude/builtins.c	(revision bad15f7b4c024353d3e0e2074c7acde3860848b9)
+++ libcfa/prelude/builtins.c	(revision 532c0cdf854a68fe4bfc7de28c87688b31f9c5ed)
@@ -180,11 +180,4 @@
 };
 
-static inline forall( E | Serial( E ) ) {
-	E fromInt( int i );
-	E succ( E e );
-	E pred( E e );
-	int Countof( E );
-}
-
 forall( E ) trait CfaEnum {
 	const char * label( E e );
@@ -196,5 +189,5 @@
 };
 
-static inline {
+static inline
 forall( E | Serial( E ) ) {
 	E fromInt( int i ) {
@@ -228,9 +221,8 @@
 	}
 }
-}
 
 static inline
-forall( E | CfaEnum( E ) | Serial( E ) ) {
-	int ?==?( E l, E r ) { return posn( l ) == posn( r ); }	// relational operators
+forall( E | CfaEnum( E ) ) {
+	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 ); }
@@ -238,7 +230,10 @@
 	int ?>?( E l, E r ) { return posn( l ) > posn( r ); }
 	int ?>=?( E l, E r ) { return posn( l ) >= posn( r ); }
-
-	E ++?( E & l ) { 									// increment operators
-		int pos = posn( l );
+}
+
+static inline
+forall( E | Serial( E ) ) {
+	E ++?( E & l ) {
+		int pos = fromInstance( l );
 		l = fromInt_unsafe( pos + 1 );
 		return l;
@@ -246,5 +241,5 @@
 
 	E --?( E & l ) {
-		int pos = posn( l );
+		int pos = fromInstance( l );
 		l = fromInt_unsafe( pos - 1 );
 		return l;
@@ -252,5 +247,5 @@
 
 	E ?+=?( E & l, one_t ) {
-		int pos = posn( l );
+		int pos = fromInstance( l );
 		l = fromInt_unsafe( pos + 1 );
 		return l;
@@ -258,5 +253,5 @@
 
 	E ?-=?( E & l, one_t ) {
-		int pos = posn( l );
+		int pos = fromInstance( l );
 		l = fromInt_unsafe( pos - 1 );
 		return l;
@@ -264,5 +259,5 @@
 
 	E ?+=?( E & l, int i ) {
-		int pos = posn( l );
+		int pos = fromInstance( l );
 		l = fromInt_unsafe( pos + i );
 		return l;
@@ -270,5 +265,5 @@
 
 	E ?-=?( E & l, int i ) {
-		int pos = posn( l );
+		int pos = fromInstance( l );
 		l = fromInt_unsafe( pos - i );
 		return l;
@@ -276,5 +271,5 @@
 
 	E ?++( E & l ) {
-		int pos = posn( l );
+		int pos = fromInstance( l );
 		l = fromInt_unsafe( pos + 1 );
 		return fromInt_unsafe( pos );
@@ -282,5 +277,5 @@
 
 	E ?--( E & l ) {
-		int pos = posn( l );
+		int pos = fromInstance( l );
 		l = fromInt_unsafe( pos - 1 );
 		return fromInt_unsafe( pos );
