Index: libcfa/src/bits/multi_list.cfa
===================================================================
--- libcfa/src/bits/multi_list.cfa	(revision 58870e6b138b1f3c496aa9a02a22d125c6343a15)
+++ 	(revision )
@@ -1,101 +1,0 @@
-#include <fstream.hfa>
-#include <stdlib.hfa>
-#include "sequence.hfa"
-#include "queue.hfa"
-#include "stack.hfa"
-
-struct Task;											// node type
-
-struct TaskDL {
-	inline Seqable;
-	Task & node;
-};
-void ?{}( TaskDL & this, Task & task ) with( this ) {
-	((Seqable &)this){};
-	&node = &task;										// pointer to containing node
-}
-Task & task( TaskDL & this ) with( this ) {				// getter routine for containing node
-	return node;
-}
-
-struct TaskSL {
-	inline Colable;
-	Task & node;
-};
-void ?{}( TaskSL & this, Task & task ) with( this ) {
-	((Colable &)this){};
-	&node = &task;										// pointer to containing node
-}
-Task & task( TaskSL & this ) with( this ) {				// getter routine for containing node
-	return node;
-}
-
-struct Task {
-	TaskDL clusterRef;									// list of tasks on cluster
-	TaskDL readyRef;									// list of tasks on ready queue
-	TaskSL mutexRef;									// list of tasks on mutex queue
-	int id;
-};
-void ?{}( Task & this, int id ) with( this ) {
-	((TaskDL &)clusterRef){ this };
-	((TaskDL &)readyRef){ this };
-	((TaskSL &)mutexRef){ this };
-	this.id = id;
-}
-
-int main() {
-	Sequence(TaskDL) clustList, readyList;				// task lists
-	Queue(TaskSL) mutexList;
-	enum { Lnth = 10 };
-
-	for ( id; Lnth ) {
-		Task & task = *new( id );						// create task node
-		addHead( clustList, task.clusterRef );			// insert on lists in opposite directions
-		addTail( readyList, task.readyRef );
-		addHead( mutexList, task.mutexRef );
-	}
-
-	SeqIter(TaskDL) sqiter;
-	TaskDL & dl;										// iterator index
-	TaskSL & sl;
-
-	sout | nlOff;
-	for ( over( sqiter, clustList ); sqiter >> dl; ) {	// print lists
-		Task & tmp = task( dl ); sout | tmp.id;
-		// sout | task( dl ).id;
-	}
-	sout | nl;
-	for ( over( sqiter, readyList ); sqiter >> dl; ) {
-		Task & tmp = task( dl ); sout | tmp.id;
-		// sout | task( dl ).id;
-	}
-	sout | nl;
-	for ( QueueIter(TaskSL) qiter = { mutexList }; qiter >> sl; ) {	// print lists
-		Task & tmp = task( sl ); sout | tmp.id;
-		// sout | task( sl ).id;
-	}
-	sout | nl;
-	for ( Lnth ) {										// remove nodes from clustList. mutexList
-		dropHead( clustList );
-		drop( mutexList );
-	}
-	// Simultaneous deletion only safe if all nodes are traversed in same direction.
-	for ( Lnth ) {										// remove nodes from readyList and safe to delete nodes
-		delete( &task( dropHead( readyList ) ) );
-	}
-
-	// Re-purpose Seqable as Colable
-	Stack(TaskDL) mutexStack;
-	for ( id; Lnth ) {
-		Task & task = *new( id );						// create task node
-		push( mutexStack, task.clusterRef );			// insert on lists in opposite directions
-	}
-	for ( StackIter(TaskDL) stiter = { mutexStack }; stiter >> dl; ) {
-		Task & tmp = task( dl ); sout | tmp.id;
-		// sout | task( dl ).id;
-	}
-	sout | nl;
-	for ( Lnth ) {										// remove nodes from readyList and safe to delete nodes
-		delete( &task( pop( mutexStack ) ) );
-	}
-}
Index: libcfa/src/bits/queue.hfa
===================================================================
--- libcfa/src/bits/queue.hfa	(revision 58870e6b138b1f3c496aa9a02a22d125c6343a15)
+++ libcfa/src/bits/queue.hfa	(revision aac5dfdb59a46b62e74d2ab25a1983af492cbcd0)
@@ -1,5 +1,5 @@
 #pragma once
 
-#include "collection.hfa"
+#include "bits/collection.hfa"
 
 forall( dtype T ) {
Index: libcfa/src/bits/queue_example.cfa
===================================================================
--- libcfa/src/bits/queue_example.cfa	(revision 58870e6b138b1f3c496aa9a02a22d125c6343a15)
+++ 	(revision )
@@ -1,108 +1,0 @@
-#include <fstream.hfa>
-#include <stdlib.hfa>									// new, delete
-#include "queue.hfa"
-
-int main() {
-	// Fred test
-
-	struct Fred {
-		inline Colable;									// Plan 9 inheritance
-		int i;
-	};
-	void ?{}( Fred & fred ) { abort(); }
-	void ?{}( Fred & fred, int p ) with( fred ) {
-		i = p;
-	}
-
-	Queue(Fred) fred;
-	QueueIter(Fred) fredIter = { fred };
-	Fred & f;
-
-	sout | nlOff;										// turn off auto newline
-
-	for ( ; fredIter >> f; ) {							// empty list
-		sout | f.i | ' ';
-	}
-	sout | "empty" | nl;
-	
-	for ( i; 10 ) {
-		add( fred, *new( 2 * i ) );
-	}
-
-	for ( QueueIter(Fred) iter = { fred }; iter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( i; 9 ) {
-		delete( &drop( fred ) );
-	}
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 10 ) {
-		add( fred, *new( 2 * i + 1 ) );
-	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		delete( &f );
-	}
-
-	// Mary test
-
-	struct Mary {
-		inline Fred;									// Plan 9 inheritance
-		int j;
-	};
-	void ?{}( Mary & mary ) { abort(); }
-	void ?{}( Mary & mary, int p ) with( mary ) {
-		((Fred &)mary){ p };
-		j = i = p;
-	}
-
-	Queue(Mary) mary;
-	QueueIter(Mary) maryIter = { mary };
-	Mary & m;
-
-	for ( ; maryIter >> m; ) {							// empty list
-		sout | m.i | m.j | ' ';
-	}
-	sout | "empty" | nl;
-	
-	for ( i; 10 ) {
-		add( mary, *new( 2 * i ) );
-	}
-
-	for ( QueueIter(Mary) iter = { mary }; iter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 9 ) {
-		delete( &drop( mary ) );
-	}
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 10 ) {
-		add( mary, *new( 2 * i + 1 ) );
-	}
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		delete( &m );
-	}
-}
Index: libcfa/src/bits/sequence.hfa
===================================================================
--- libcfa/src/bits/sequence.hfa	(revision 58870e6b138b1f3c496aa9a02a22d125c6343a15)
+++ libcfa/src/bits/sequence.hfa	(revision aac5dfdb59a46b62e74d2ab25a1983af492cbcd0)
@@ -1,5 +1,5 @@
 #pragma once
 
-#include "collection.hfa"
+#include "bits/collection.hfa"
 
 struct Seqable {
Index: libcfa/src/bits/sequence_example.cfa
===================================================================
--- libcfa/src/bits/sequence_example.cfa	(revision 58870e6b138b1f3c496aa9a02a22d125c6343a15)
+++ 	(revision )
@@ -1,138 +1,0 @@
-#include <fstream.hfa>
-#include <stdlib.hfa>									// new, delete
-#include "sequence.hfa"
-
-int main() {
-	// Fred test
-
-	struct Fred {
-		inline Seqable;									// Plan 9 inheritance
-		int i;
-	};
-	void ?{}( Fred & fred ) { abort(); }
-	void ?{}( Fred & fred, int p ) with( fred ) {
-		i = p;
-	}
-
-	Sequence(Fred) fred;
-	SeqIter(Fred) fredIter = { fred };
-	Fred & f;
-
-	sout | nlOff;										// turn off auto newline
-
-	for ( ; fredIter >> f; ) {							// empty list
-		sout | f.i | ' ';
-	}
-	sout | "empty" | nl;
-	
-	for ( i; 10 ) {
-		add( fred, *new( 2 * i ) );
-	}
-
-	for ( SeqIter(Fred) iter = { fred }; iter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( i; 9 ) {
-		delete( &dropHead( fred ) );
-	}
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 10 ) {
-		addTail( fred, *new( 2 * i + 1 ) );
-	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( i; 9 ) {
-		delete( &dropTail( fred ) );
-	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		delete( &f );
-	}
-
-	// Mary test
-
-	struct Mary {
-		inline Fred;									// Plan 9 inheritance
-		int j;
-	};
-	void ?{}( Mary & mary ) { abort(); }
-	void ?{}( Mary & mary, int p ) with( mary ) {
-		((Fred &)mary){ p };
-		j = p;
-	}
-
-	Sequence(Mary) mary;
-	Sequence(Mary) baz;
-	SeqIter(Mary) maryIter = { mary };
-	Mary & m;
-
-	for ( ; maryIter >> m; ) {							// empty list
-		sout | m.i | m.j | ' ';
-	}
-	sout | "empty" | nl;
-	
-	for ( i; 10 ) {
-		add( mary, *new( 2 * i ) );
-		add( baz, *new( 2 * i ) );
-	}
-
-	for ( SeqIter(Mary) iter = { mary }; iter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 9 ) {
-		delete( &dropHead( mary ) );
-	}
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 10 ) {
-		addTail( mary, *new( 2 * i + 1 ) );
-	}
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-
-	for ( i; 9 ) {
-		delete( &dropTail( mary ) );
-	}
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-
-	transfer( mary, baz );
-
-	for ( over( maryIter, baz ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | "empty" | nl;
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		delete( &m );
-	}
-}
Index: libcfa/src/bits/stack.hfa
===================================================================
--- libcfa/src/bits/stack.hfa	(revision 58870e6b138b1f3c496aa9a02a22d125c6343a15)
+++ libcfa/src/bits/stack.hfa	(revision aac5dfdb59a46b62e74d2ab25a1983af492cbcd0)
@@ -1,5 +1,5 @@
 #pragma once
 
-#include "collection.hfa"
+#include "bits/collection.hfa"
 
 forall( dtype T ) {
Index: libcfa/src/bits/stack_example.cfa
===================================================================
--- libcfa/src/bits/stack_example.cfa	(revision 58870e6b138b1f3c496aa9a02a22d125c6343a15)
+++ 	(revision )
@@ -1,108 +1,0 @@
-#include <fstream.hfa>
-#include <stdlib.hfa>									// new, delete
-#include "stack.hfa"
-
-int main() {
-	// Fred test
-
-	struct Fred {
-		inline Colable;									// Plan 9 inheritance
-		int i;
-	};
-	void ?{}( Fred & fred ) { abort(); }
-	void ?{}( Fred & fred, int p ) with( fred ) {
-		i = p;
-	}
-
-	Stack(Fred) fred;
-	StackIter(Fred) fredIter = { fred };
-	Fred & f;
-
-	sout | nlOff;										// turn off auto newline
-
-	for ( ; fredIter >> f; ) {							// empty list
-		sout | f.i | ' ';
-	}
-	sout | "empty" | nl;
-	
-	for ( i; 10 ) {
-		push( fred, *new( 2 * i ) );
-	}
-
-	for ( StackIter(Fred) iter = { fred }; iter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 9 ) {
-		delete( &pop( fred ) );
-	}
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 10 ) {
-		push( fred, *new( 2 * i + 1 ) );
-	}
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		sout | f.i | ' ';
-	}
-	sout | nl;
-
-	for ( over( fredIter, fred ); fredIter >> f; ) {
-		delete( &f );
-	}
-
-	// Mary test
-
-	struct Mary {
-		inline Fred;									// Plan 9 inheritance
-		int j;
-	};
-	void ?{}( Mary & mary ) { abort(); }
-	void ?{}( Mary & mary, int p ) with( mary ) {
-		((Fred &)mary){ p };
-		j = i = p;
-	}
-
-	Stack(Mary) mary;
-	StackIter(Mary) maryIter = { mary };
-	Mary & m;
-
-	for ( ; maryIter >> m; ) {							// empty list
-		sout | m.i | m.j | ' ';
-	}
-	sout | "empty" | nl;
-	
-	for ( i; 10 ) {
-		push( mary, *new( 2 * i ) );
-	}
-
-	for ( StackIter(Mary) iter = { mary }; iter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 9 ) {
-		delete( &pop( mary ) );
-	}
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-	
-	for ( i; 10 ) {
-		push( mary, *new( 2 * i + 1 ) );
-	}
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		sout | m.i | m.j | ' ';
-	}
-	sout | nl;
-
-	for ( over( maryIter, mary ); maryIter >> m; ) {
-		delete( &m );
-	}
-}
