Index: libcfa/src/bits/queue.hfa
===================================================================
--- libcfa/src/bits/queue.hfa	(revision 9082e0f12904731f5fd3c349d878554fb4a0563c)
+++ libcfa/src/bits/queue.hfa	(revision a5a67ab897a37cb777e0553f71e8a72fff0efe62)
@@ -27,9 +27,9 @@
 		}
 
-		T & succ( Queue(T) & q, T & n ) with( q ) {		// pre: *n in *q
+		T * succ( Queue(T) & q, T * n ) with( q ) {		// pre: *n in *q
 #ifdef __CFA_DEBUG__
-			if ( ! listed( &n ) ) abort( "(Queue &)%p.succ( %p ) : Node is not on a list.", &q, &n );
+			if ( ! listed( n ) ) abort( "(Queue &)%p.succ( %p ) : Node is not on a list.", &q, n );
 #endif // __CFA_DEBUG__
-			return (Next( &n ) == &n) ? *0p : *Next( &n );
+			return (Next( n ) == n) ? 0p : Next( n );
 		} // post: n == tail() & succ(n) == 0 | n != tail() & *succ(n) in *q
 
@@ -62,13 +62,13 @@
 
 		T & dropHead( Queue(T) & q ) with( q ) {
-			T * t = &head( q );
+			T & t = head( q );
 			if ( root ) {
 				root = Next( root );
-				if ( &head( q ) == t ) {
+				if ( &head( q ) == &t ) {
 					root = last = 0p;					// only one element
 				}
-				Next( t ) = 0p;
+				Next( &t ) = 0p;
 			}
-			return *t;
+			return t;
 		}
 
@@ -81,11 +81,11 @@
 			if ( ! listed( (Colable &)n ) ) abort( "(Queue &)%p.remove( %p ) : Node is not on a list.", &q, &n );
 #endif // __CFA_DEBUG__
-			T * prev = 0;
+			T * prev = 0p;
 			T * curr = (T *)root;
 			for ( ;; ) {
-				if (&n == curr) {						// found => remove
-					if ((T *)root == &n) {
+				if ( &n == curr ) {						// found => remove
+					if ( (T *)root == &n ) {
 						dropHead( q );
-					} else if (last == &n) {
+					} else if ( last == &n ) {
 						last = prev;
 						Next( last ) = last;
@@ -132,8 +132,8 @@
 			to.last = &n;								// end of "to" list
 			from.root = Next( &n );						// start of "from" list
-			if ( &n == &head( from ) ) {					// last node in list ?
+			if ( &n == &head( from ) ) {				// last node in list ?
 				from.root = from.last = 0p;				// mark "from" list empty
 			} else {
-				Next( &n ) = &n;							// fix end of "to" list
+				Next( &n ) = &n;						// fix end of "to" list
 			}
 			transfer( q, to );
@@ -179,4 +179,4 @@
 
 // Local Variables: //
-// compile-command: "make install" //
+// compile-command: "cfa queue.cfa" //
 // End: //
Index: libcfa/src/bits/sequence.hfa
===================================================================
--- libcfa/src/bits/sequence.hfa	(revision 9082e0f12904731f5fd3c349d878554fb4a0563c)
+++ libcfa/src/bits/sequence.hfa	(revision a5a67ab897a37cb777e0553f71e8a72fff0efe62)
@@ -2,6 +2,4 @@
 
 #include "collection.hfa"
-#include <stdlib.hfa>
-#include <stdio.h>
 
 struct Seqable {
@@ -50,20 +48,20 @@
 		T & tail( Sequence(T) & s ) with( s ) {
 			return root ? (T &)*Back( &head( s ) ) : *0p;
-		}	// post: empty() & tail() == 0 | !empty() & tail() in *s\
+		}	// post: empty() & tail() == 0 | !empty() & tail() in *s
 
 		// Return a pointer to the element after *n, or 0p if there isn't one.
-		T & succ( Sequence(T) & s, T & n ) with( s ) {	// pre: *n in *s
-#ifdef __CFA_DEBUG__
-			if ( ! listed( &n ) ) abort( "(Sequence &)%p.succ( %p ) : Node is not on a list.", &s, &n );
-#endif // __CFA_DEBUG__
-			return Next( &n ) == &head( s ) ? *0p : *Next( &n );
-		}	// post: n == tail() & succ(n) == 0 | n != tail() & *succ(n) in *s
+		T * succ( Sequence(T) & s, T * n ) with( s ) {	// pre: *n in *s
+#ifdef __CFA_DEBUG__
+			if ( ! listed( n ) ) abort( "(Sequence &)%p.succ( %p ) : Node is not on a list.", &s, n );
+#endif // __CFA_DEBUG__
+			return Next( n ) == &head( s ) ? 0p : Next( n );
+		} // post: n == tail() & succ(n) == 0 | n != tail() & *succ(n) in *s
 
 		// Return a pointer to the element before *n, or 0p if there isn't one.
-		T & pred( Sequence(T) & s, T & n ) with( s ) {	// pre: *n in *s
-#ifdef __CFA_DEBUG__
-			if ( ! listed( &n ) ) abort( "(Sequence &)%p.pred( %p ) : Node is not on a list.", &s, &n );
-#endif // __CFA_DEBUG__
-			return &n == &head( s ) ? *0p : *Back( &n );
+		T * pred( Sequence(T) & s, T * n ) with( s ) {	// pre: *n in *s
+#ifdef __CFA_DEBUG__
+			if ( ! listed( n ) ) abort( "(Sequence &)%p.pred( %p ) : Node is not on a list.", &s, n );
+#endif // __CFA_DEBUG__
+			return n == &head( s ) ? 0p : Back( n );
 		}	// post: n == head() & head(n) == 0 | n != head() & *pred(n) in *s
 
@@ -137,5 +135,5 @@
 			if ( &n == &head( s ) ) {
 				if ( Next( &head( s ) ) == &head( s ) ) root = 0p;
-				else root = Next( &head(s ) );
+				else root = Next( &head( s ) );
 			} // if
 			Back( Next( &n ) ) = Back( &n );
@@ -227,5 +225,11 @@
 			curr = &head( s );
 		} // post: elts = null.
-		
+
+		void ?{}( SeqIter(T) & si, Sequence(T) & s, T & start ) with( si ) {
+			((ColIter &) si){};
+			seq = &s;
+			curr = &start;
+		} // post: elts = null.
+
 		void over( SeqIter(T) & si, Sequence(T) & s ) with( si ) {
 			seq = &s;
@@ -236,5 +240,5 @@
 			if ( curr ) {
 				&tp = Curr( si );
-				T * n = &succ( *seq, *Curr( si ) );
+				T * n = succ( *seq, Curr( si ) );
 				curr = n == &head( *seq ) ? 0p : n;
 			} else &tp = 0p;
@@ -261,5 +265,11 @@
 			curr = &tail( s );
 		} // post: elts = null.
-		
+
+		void ?{}( SeqIterRev(T) & si, Sequence(T) & s, T & start ) with( si ) {	
+			((ColIter &) si){};
+			seq = &s;
+			curr = &start;
+		} // post: elts = null.
+
 		void over( SeqIterRev(T) & si, Sequence(T) & s ) with( si ) {
 			seq = &s;
@@ -270,5 +280,5 @@
 			if ( curr ) {
 				&tp = Curr( si );
-				T * n = &pred( *seq, *Curr( si ) );
+				T * n = pred( *seq, Curr( si ) );
 				curr = n == &tail( *seq ) ? 0p : n;
 			} else &tp = 0p;
@@ -279,4 +289,4 @@
 
 // Local Variables: //
-// compile-command: "make install" //
+// compile-command: "cfa sequence.hfa" //
 // End: //
Index: libcfa/src/bits/stack.hfa
===================================================================
--- libcfa/src/bits/stack.hfa	(revision 9082e0f12904731f5fd3c349d878554fb4a0563c)
+++ libcfa/src/bits/stack.hfa	(revision a5a67ab897a37cb777e0553f71e8a72fff0efe62)
@@ -10,6 +10,6 @@
 	inline {
 		// wrappers to make Collection have T
-		T * head( Stack(T) & s ) with( s ) {
-			return (T *)head( (Collection &)s );
+		T & head( Stack(T) & s ) with( s ) {
+			return *(T *)head( (Collection &)s );
 		} // post: empty() & head() == 0 | !empty() & head() in *this
 
@@ -22,5 +22,5 @@
 
 		T & top( Stack(T) & s ) with( s ) {
-			return *head( s );
+			return head( s );
 		}
 
@@ -29,5 +29,5 @@
 			if ( listed( (Colable &)(n) ) ) abort( "(Stack &)%p.addHead( %p ) : Node is already on another list.", &s, n );
 #endif // __CFA_DEBUG__
-			Next( &n ) = head( s ) ? head( s ) : &n;
+			Next( &n ) = &head( s ) ? &head( s ) : &n;
 			root = &n;
 		}
@@ -42,8 +42,8 @@
 
 		T & drop( Stack(T) & s ) with( s ) {
-			T & t = *head( s );
+			T & t = head( s );
 			if ( root ) {
 				root = ( T *)Next(root);
-				if ( head( s ) == &t ) root = 0p;		// only one element ?
+				if ( &head( s ) == &t ) root = 0p;		// only one element ?
 				Next( &t ) = 0p;
 			} // if
@@ -70,5 +70,5 @@
 		// create an iterator active in Stack s
 		void ?{}( StackIter(T) & si, Stack(T) & s ) with( si ) {
-			curr = head( s );
+			curr = &head( s );
 		} // post: curr = {e in s}
 
@@ -79,5 +79,5 @@
 		// make existing iterator active in Stack q
 		void over( StackIter(T) & si, Stack(T) & s ) with( si ) {
-			curr = head( s );
+			curr = &head( s );
 		} // post: curr = {e in s}
 
