Index: libcfa/src/bits/collection.hfa
===================================================================
--- libcfa/src/bits/collection.hfa	(revision a32cbac249c437a50b3c8d7ecd4ff771150a78ca)
+++ libcfa/src/bits/collection.hfa	(revision ec5d599d4511c74de9bc53a820dd3d90cb762abe)
@@ -7,4 +7,6 @@
 
 inline {
+	// PUBLIC
+
 	void ?{}( Colable & co ) with( co ) {
 		next = 0p;
@@ -16,7 +18,9 @@
 	}
 
-	Colable * getNext( Colable & co ) with( co ) {
-		return next;
+	Colable & getNext( Colable & co ) with( co ) {
+		return *next;
 	}
+
+	// PRIVATE
 
 	Colable *& Next( Colable * cp ) {
@@ -24,7 +28,8 @@
 	}
 
+	// wrappers to make Collection have T
 	forall( dtype T ) {
-		T *& Next( T * n ) {
-			return (T *)Next( (Colable *)n );
+		T *& Next( T & n ) {
+			return (T *)Next( (Colable *)&n );
 		}
 
Index: libcfa/src/bits/multi_list.cfa
===================================================================
--- libcfa/src/bits/multi_list.cfa	(revision a32cbac249c437a50b3c8d7ecd4ff771150a78ca)
+++ libcfa/src/bits/multi_list.cfa	(revision ec5d599d4511c74de9bc53a820dd3d90cb762abe)
@@ -57,5 +57,5 @@
 
 	SeqIter(TaskDL) sqiter;
-	TaskDL & dl;
+	TaskDL & dl;										// iterator index
 	TaskSL & sl;
 
Index: libcfa/src/bits/queue.hfa
===================================================================
--- libcfa/src/bits/queue.hfa	(revision a32cbac249c437a50b3c8d7ecd4ff771150a78ca)
+++ libcfa/src/bits/queue.hfa	(revision ec5d599d4511c74de9bc53a820dd3d90cb762abe)
@@ -28,31 +28,31 @@
 
 		T * succ( Queue(T) & q, T * n ) with( q ) {		// pre: *n in *q
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			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 );
+			#endif // __CFA_DEBUG__
+			return (Next( *n ) == n) ? 0p : Next( *n );
 		} // post: n == tail() & succ(n) == 0 | n != tail() & *succ(n) in *q
 
 		void addHead( Queue(T) & q, T & n ) with( q ) {
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			if ( listed( &n ) ) abort( "(Queue &)%p.addHead( %p ) : Node is already on another list.", &q, &n );
-#endif // __CFA_DEBUG__
+			#endif // __CFA_DEBUG__
 			if ( last ) {
-				Next( &n ) = &head( q );
+				Next( n ) = &head( q );
 				q.root = &n;
 			} else {
 				root = last = &n;
-				Next( &n ) = &n;							// last node points to itself
+				Next( n ) = &n;							// last node points to itself
 			}
 		}
 
 		void addTail( Queue(T) & q, T & n ) with( q ) {
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			if ( listed( &n ) ) abort( "(Queue &)%p.addTail( %p ) : Node is already on another list.", &q, &n );
-#endif // __CFA_DEBUG__
-			if ( last ) Next( last ) = &n;
+			#endif // __CFA_DEBUG__
+			if ( last ) Next( *last ) = &n;
 			else root = &n;
 			last = &n;
-			Next( &n ) = &n;								// last node points to itself
+			Next( n ) = &n;								// last node points to itself
 		}
 
@@ -64,9 +64,9 @@
 			T & t = head( q );
 			if ( root ) {
-				root = Next( root );
+				root = Next( *root );
 				if ( &head( q ) == &t ) {
 					root = last = 0p;					// only one element
 				}
-				Next( &t ) = 0p;
+				Next( t ) = 0p;
 			}
 			return t;
@@ -78,28 +78,28 @@
 
 		void remove( Queue(T) & q, T & n ) with( q ) {	// O(n)
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			if ( ! listed( (Colable &)n ) ) abort( "(Queue &)%p.remove( %p ) : Node is not on a list.", &q, &n );
-#endif // __CFA_DEBUG__
-			T * prev = 0p;
-			T * curr = (T *)root;
+			#endif // __CFA_DEBUG__
+			T & prev = *0p;
+			T & curr = *(T *)root;
 			for ( ;; ) {
-				if ( &n == curr ) {						// found => remove
+				if ( &n == &curr ) {						// found => remove
 					if ( (T *)root == &n ) {
 						dropHead( q );
 					} else if ( last == &n ) {
-						last = prev;
-						Next( last ) = last;
+						last = &prev;
+						Next( *last ) = last;
 					} else {
 						Next( prev ) = Next( curr );
 					}
-					Next( &n ) = 0p;
+					Next( n ) = 0p;
 					break;
 				}
-#ifdef __CFA_DEBUG__
 				// not found => error
-				if (curr == last) abort( "(Queue &)%p.remove( %p ) : Node is not in list.", &q, &n );
-#endif // __CFA_DEBUG__
-				prev = curr;
-				curr = Next( curr );
+				#ifdef __CFA_DEBUG__
+				if ( &curr == last ) abort( "(Queue &)%p.remove( %p ) : Node is not in list.", &q, &n );
+				#endif // __CFA_DEBUG__
+				&prev = &curr;
+				&curr = Next( curr );
 			}
 		} // post: ! listed( n )
@@ -116,5 +116,5 @@
 				root = from.root;
 			} else {									// "to" list not empty
-				Next( last ) = &head( from );
+				Next( *last ) = &head( from );
 			}
 			last = from.last;
@@ -125,15 +125,15 @@
 		// Node "n" must be in the "from" list.
 		void split( Queue(T) & q, Queue(T) & from, T & n ) with( q ) {
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			if ( ! listed( (Colable &)n ) ) abort( "(Queue &)%p.split( %p ) : Node is not on a list.", &q, &n );
-#endif // __CFA_DEBUG__
+			#endif // __CFA_DEBUG__
 			Queue(T) to;
 			to.root = from.root;						// start of "to" list
 			to.last = &n;								// end of "to" list
-			from.root = Next( &n );						// start of "from" list
+			from.root = Next( n );						// start of "from" 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 );
@@ -169,5 +169,5 @@
 			if ( curr ) {
 				&tp = Curr( qi );
-				T * n = Next( Curr( qi ) );
+				T * n = Next( *Curr( qi ) );
 				curr = (n == Curr( qi ) ) ? 0p : n;
 			} else &tp = 0p;
@@ -177,6 +177,2 @@
 	} // distribution
 } // distribution
-
-// Local Variables: //
-// compile-command: "cfa queue.cfa" //
-// End: //
Index: libcfa/src/bits/queue_example.cfa
===================================================================
--- libcfa/src/bits/queue_example.cfa	(revision a32cbac249c437a50b3c8d7ecd4ff771150a78ca)
+++ libcfa/src/bits/queue_example.cfa	(revision ec5d599d4511c74de9bc53a820dd3d90cb762abe)
@@ -107,6 +107,2 @@
 	}
 }
-
-// Local Variables: //
-// compile-command: "cfa queue_example.cfa" //
-// End: //
Index: libcfa/src/bits/sequence.hfa
===================================================================
--- libcfa/src/bits/sequence.hfa	(revision a32cbac249c437a50b3c8d7ecd4ff771150a78ca)
+++ libcfa/src/bits/sequence.hfa	(revision ec5d599d4511c74de9bc53a820dd3d90cb762abe)
@@ -9,4 +9,6 @@
 
 inline {
+	// PUBLIC
+
 	void ?{}( Seqable & sq ) with( sq ) {
 		((Colable &) sq){};
@@ -18,7 +20,20 @@
 	}
 
+	// PRIVATE
+
 	Seqable *& Back( Seqable * sq ) {
 		return sq->back;
 	}
+
+	// wrappers to make Collection have T
+	forall( dtype T ) {
+		T *& Back( T & n ) {
+			return (T *)Back( (Seqable *)&n );
+		}
+
+		T & head( Sequence(T) & s ) with( s ) {
+			return *(T *)head( (Collection &)s );
+		} // post: empty() & head() == 0 | !empty() & head() in *s
+	} // distribution
 } // distribution
 
@@ -29,13 +44,4 @@
 
 	inline {
-		// wrappers to make Collection have T
-		T & head( Sequence(T) & s ) with( s ) {
-			return *(T *)head( (Collection &)s );
-		} // post: empty() & head() == 0 | !empty() & head() in *s
-
-		T *& Back( T * n ) {
-			return (T *)Back( (Seqable *)n );
-		}
-
 		void ?{}( Sequence(T) &, const Sequence(T) & ) = void; // no copy
 		Sequence(T) & ?=?( const Sequence(T) & ) = void; // no assignment
@@ -47,21 +53,21 @@
 		// Return a pointer to the last sequence element, without removing it.	
 		T & tail( Sequence(T) & s ) with( s ) {
-			return root ? (T &)*Back( &head( s ) ) : *0p;
+			return root ? (T &)*Back( head( s ) ) : *0p;
 		}	// post: empty() & tail() == 0 | !empty() & tail() in *s
 
-		// Return a pointer to the element after *n, or 0p if there isn't one.
+		// Return a pointer to the element after *n, or 0p if list empty.
 		T * succ( Sequence(T) & s, T * n ) with( s ) {	// pre: *n in *s
-#ifdef __CFA_DEBUG__
+			#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 );
+			#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__
+			#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 );
+			#endif // __CFA_DEBUG__
+			return n == &head( s ) ? 0p : Back( *n );
 		}	// post: n == head() & head(n) == 0 | n != head() & *pred(n) in *s
 
@@ -69,18 +75,18 @@
 		// Insert *n into the sequence before *bef, or at the end if bef == 0.
 		void insertBef( Sequence(T) & s, T & n, T & bef ) with( s ) { // pre: !n->listed() & *bef in *s
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			if ( listed( &n ) ) abort( "(Sequence &)%p.insertBef( %p, %p ) : Node is already on another list.", &s, n, &bef );
-#endif // __CFA_DEBUG__
+			#endif // __CFA_DEBUG__
 			if ( &bef == &head( s ) ) {					// must change root
 				if ( root ) {
-					Next( &n ) = &head( s );
-					Back( &n ) = Back( &head( s ) );
+					Next( n ) = &head( s );
+					Back( n ) = Back( head( s ) );
 					// inserted node must be consistent before it is seen
 					asm( "" : : : "memory" );			// prevent code movement across barrier
-					Back( &head( s ) ) = &n;
-					Next( Back( &n ) ) = &n;
+					Back( head( s ) ) = &n;
+					Next( *Back( n ) ) = &n;
 				} else {
-					Next( &n ) = &n;
-					Back( &n ) = &n;
+					Next( n ) = &n;
+					Back( n ) = &n;
 				} // if
 				// inserted node must be consistent before it is seen
@@ -89,10 +95,10 @@
 			} else {
 				if ( ! &bef ) &bef = &head( s );
-				Next( &n ) = &bef;
-				Back( &n ) = Back( &bef );
+				Next( n ) = &bef;
+				Back( n ) = Back( bef );
 				// inserted node must be consistent before it is seen
 				asm( "" : : : "memory" );				// prevent code movement across barrier
-				Back( &bef ) = &n;
-				Next( Back( &n ) ) = &n;
+				Back( bef ) = &n;
+				Next( *Back( n ) ) = &n;
 			} // if
 		}	// post: n->listed() & *n in *s & succ(n) == bef
@@ -101,28 +107,28 @@
 		// Insert *n into the sequence after *aft, or at the beginning if aft == 0.
 		void insertAft( Sequence(T) & s, T & aft, T & n ) with( s ) {	// pre: !n->listed() & *aft in *s
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			if ( listed( &n ) ) abort( "(Sequence &)%p.insertAft( %p, %p ) : Node is already on another list.", &s, &aft, &n );
-#endif // __CFA_DEBUG__
+			#endif // __CFA_DEBUG__
 			if ( ! &aft ) {								// must change root
 				if ( root ) {
-					Next( &n ) = &head( s );
-					Back( &n ) = Back( &head( s ) );
+					Next( n ) = &head( s );
+					Back( n ) = Back( head( s ) );
 					// inserted node must be consistent before it is seen
 					asm( "" : : : "memory" );			// prevent code movement across barrier
-					Back( &head( s ) ) = &n;
-					Next( Back( &n ) ) = &n;
+					Back( head( s ) ) = &n;
+					Next( *Back( n ) ) = &n;
 				} else {
-					Next( &n ) = &n;
-					Back( &n ) = &n;
+					Next( n ) = &n;
+					Back( n ) = &n;
 				} // if
 				asm( "" : : : "memory" );				// prevent code movement across barrier
 				root = &n;
 			} else {
-				Next( &n ) = Next( &aft );
-				Back( &n ) = &aft;
+				Next( n ) = Next( aft );
+				Back( n ) = &aft;
 				// inserted node must be consistent before it is seen
 				asm( "" : : : "memory" );				// prevent code movement across barrier
-				Back( Next( &n ) ) = &n;
-				Next( &aft ) = &n;
+				Back( *Next( n ) ) = &n;
+				Next( aft ) = &n;
 			} // if
 		}	  // post: n->listed() & *n in *s & succ(n) == bef
@@ -130,14 +136,14 @@
 		// pre: n->listed() & *n in *s
 		void remove( Sequence(T) & s, T & n ) with( s ) { // O(1)
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			if ( ! listed( &n ) ) abort( "(Sequence &)%p.remove( %p ) : Node is not on a list.", &s, &n );
-#endif // __CFA_DEBUG__
+			#endif // __CFA_DEBUG__
 			if ( &n == &head( s ) ) {
-				if ( Next( &head( s ) ) == &head( s ) ) root = 0p;
-				else root = Next( &head( s ) );
-			} // if
-			Back( Next( &n ) ) = Back( &n );
-			Next( Back( &n ) ) = Next( &n );
-			Next( &n ) = Back( &n ) = 0p;
+				if ( Next( head( s ) ) == &head( s ) ) root = 0p;
+				else root = Next( head( s ) );
+			} // if
+			Back( *Next( n ) ) = Back( n );
+			Next( *Back( n ) ) = Next( n );
+			Next( n ) = Back( n ) = 0p;
 		}							// post: !n->listed().
 
@@ -175,10 +181,10 @@
 				root = from.root;
 			} else {									// "to" list not empty
-				T * toEnd = Back( &head( s ) );
-				T * fromEnd = Back( &head( from ) );
-				Back( root ) = fromEnd;
-				Next( fromEnd ) = &head( s );
-				Back( from.root ) = toEnd;
-				Next( toEnd ) = &head( from );
+				T * toEnd = Back( head( s ) );
+				T * fromEnd = Back( head( from ) );
+				Back( *root ) = fromEnd;
+				Next( *fromEnd ) = &head( s );
+				Back( *from.root ) = toEnd;
+				Next( *toEnd ) = &head( from );
 			} // if
 			from.root = 0p;								// mark "from" list empty
@@ -188,17 +194,17 @@
 		// Node "n" must be in the "from" list.
 		void split( Sequence(T) & s, Sequence(T) & from, T & n ) with( s ) {
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			if ( ! listed( &n ) ) abort( "(Sequence &)%p.split( %p ) : Node is not on a list.", &s, &n );
-#endif // __CFA_DEBUG__
+			#endif // __CFA_DEBUG__
 			Sequence(T) to;
 			to.root = from.root;						// start of "to" list
-			from.root = Next( &n );						// start of "from" list
+			from.root = Next( n );						// start of "from" list
 			if ( to.root == from.root ) {				// last node in list ?
 				from.root = 0p;							// mark "from" list empty
 			} else {
-				Back( &head( from ) ) = Back( &head( to ) ); // fix "from" list
-		 		Next( Back( &head( to ) ) ) = &head( from );
-				Next( &n ) = &head( to );					// fix "to" list
-				Back( &head( to ) ) = &n;
+				Back( head( from ) ) = Back( head( to ) ); // fix "from" list
+		 		Next( *Back( head( to ) ) ) = &head( from );
+				Next( n ) = &head( to );				// fix "to" list
+				Back( head( to ) ) = &n;
 			} // if
 			transfer( s, to );
@@ -214,5 +220,5 @@
 		// passing the sequence, traversing would require its length. Thus the iterator needs a pointer to the sequence
 		// to pass to succ/pred. Both stack and queue just encounter 0p since the lists are not circular.
-		Sequence(T) * seq;
+		Sequence(T) * seq;								// FIX ME: cannot be reference
 	};
 
@@ -255,5 +261,5 @@
 		inline ColIter;
 		// See above for explanation.
-		Sequence(T) * seq;
+		Sequence(T) * seq;								// FIX ME: cannot be reference
 	};
 
@@ -291,6 +297,2 @@
 	} // distribution
 } // distribution
-
-// Local Variables: //
-// compile-command: "cfa sequence.hfa" //
-// End: //
Index: libcfa/src/bits/sequence_example.cfa
===================================================================
--- libcfa/src/bits/sequence_example.cfa	(revision a32cbac249c437a50b3c8d7ecd4ff771150a78ca)
+++ libcfa/src/bits/sequence_example.cfa	(revision ec5d599d4511c74de9bc53a820dd3d90cb762abe)
@@ -137,6 +137,2 @@
 	}
 }
-
-// Local Variables: //
-// compile-command: "cfa sequence_example.cfa" //
-// End: //
Index: libcfa/src/bits/stack.hfa
===================================================================
--- libcfa/src/bits/stack.hfa	(revision a32cbac249c437a50b3c8d7ecd4ff771150a78ca)
+++ libcfa/src/bits/stack.hfa	(revision ec5d599d4511c74de9bc53a820dd3d90cb762abe)
@@ -26,8 +26,8 @@
 
 		void addHead( Stack(T) & s, T & n ) with( s ) {
-#ifdef __CFA_DEBUG__
+			#ifdef __CFA_DEBUG__
 			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;
+			#endif // __CFA_DEBUG__
+			Next( n ) = &head( s ) ? &head( s ) : &n;
 			root = &n;
 		}
@@ -44,7 +44,7 @@
 			T & t = head( s );
 			if ( root ) {
-				root = ( T *)Next(root);
+				root = ( T *)Next( *root );
 				if ( &head( s ) == &t ) root = 0p;		// only one element ?
-				Next( &t ) = 0p;
+				Next( t ) = 0p;
 			} // if
 			return t;
@@ -85,5 +85,5 @@
 			if ( curr ) {
 				&tp = Curr( si );
-				T * n = Next( Curr( si ) );
+				T * n = Next( *Curr( si ) );
 				curr = n == Curr( si ) ? 0p : n;
 			} else &tp = 0p;
@@ -92,6 +92,2 @@
 	} // distribution
 } // distribution
-
-// Local Variables: //
-// compile-command: "make install" //
-// End: //
Index: libcfa/src/bits/stack_example.cfa
===================================================================
--- libcfa/src/bits/stack_example.cfa	(revision a32cbac249c437a50b3c8d7ecd4ff771150a78ca)
+++ libcfa/src/bits/stack_example.cfa	(revision ec5d599d4511c74de9bc53a820dd3d90cb762abe)
@@ -107,6 +107,2 @@
 	}
 }
-
-// Local Variables: //
-// compile-command: "cfa stack_example.cfa" //
-// End: //
