Index: libcfa/prelude/builtins.c
===================================================================
--- libcfa/prelude/builtins.c	(revision 49caf644673489257d0bcb88de5d3e741aeb0047)
+++ libcfa/prelude/builtins.c	(revision 8a1d62b6ede909a6414b6d518e069975842244df)
@@ -132,13 +132,11 @@
 } // distribution
 
-#define __CFA_BASE_COMP_1__() if ( x == 1 ) return 1
-#define __CFA_BASE_COMP_2__() if ( x == 2 ) return x << (y - 1)
-#define __CFA_EXP_OVERFLOW__() if ( y >= sizeof(y) * CHAR_BIT ) return 0
-
 #define __CFA_EXP__() \
 	if ( y == 0 ) return 1;								/* convention */ \
-	__CFA_BASE_COMP_1__();								/* base case */ \
-	__CFA_BASE_COMP_2__();								/* special case, positive shifting for integral types */ \
-	__CFA_EXP_OVERFLOW__();								/* immediate overflow, negative exponent > 2^size-1 */ \
+	__CFA_EXP_INT__(									/* special cases for integral types */ \
+		if ( x == 1 ) return 1;							/* base case */ \
+		if ( x == 2 ) return x << (y - 1);				/* positive shifting */ \
+		if ( y >= sizeof(y) * CHAR_BIT ) return 0;		/* immediate overflow, negative exponent > 2^size-1 */ \
+	) \
 	typeof(x) op = 1;									/* accumulate odd product */ \
 	for ( ; y > 1; y >>= 1 ) {							/* squaring exponentiation, O(log2 y) */ \
@@ -147,4 +145,5 @@
 	} \
 	return x * op
+#define __CFA_EXP_INT__(...) __VA_ARGS__
 
 static inline {
@@ -158,10 +157,6 @@
 } // distribution
 
-#undef __CFA_BASE_COMP_1__
-#undef __CFA_BASE_COMP_2__
-#undef __CFA_EXP_OVERFLOW__
-#define __CFA_BASE_COMP_1__()
-#define __CFA_BASE_COMP_2__()
-#define __CFA_EXP_OVERFLOW__()
+#undef __CFA_EXP_INT__
+#define __CFA_EXP_INT__(...)
 
 static inline forall( OT | { void ?{}( OT & this, one_t ); OT ?*?( OT, OT ); } ) {
@@ -171,7 +166,6 @@
 } // distribution
 
-#undef __CFA_BASE_COMP_1__
-#undef __CFA_BASE_COMP_2__
-#undef __CFA_EXP_OVERFLOW__
+#undef __CFA_EXP_INT__
+#undef __CFA_EXP__
 
 static inline {
