Index: libcfa/src/bits/multi_list.cfa
===================================================================
--- libcfa/src/bits/multi_list.cfa	(revision 36ec8161fd0ba38150ac4c31f57ada643a92b7ef)
+++ libcfa/src/bits/multi_list.cfa	(revision 3c6480b7368d9a06bf7eba78eea929236be05e5d)
@@ -2,4 +2,5 @@
 #include <stdlib.hfa>
 #include "sequence.hfa"
+#include "queue.hfa"
 #include "stack.hfa"
 
@@ -8,12 +9,24 @@
 struct TaskDL {
 	inline Seqable;
-	Task & task_;
+	Task & node;
 };
 void ?{}( TaskDL & this, Task & task ) with( this ) {
 	((Seqable &)this){};
-	&task_ = &task;										// pointer to containing node
+	&node = &task;										// pointer to containing node
 }
 Task & task( TaskDL & this ) with( this ) {				// getter routine for containing node
-	return task_;
+	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;
 }
 
@@ -21,44 +34,68 @@
 	TaskDL clusterRef;									// list of tasks on cluster
 	TaskDL readyRef;									// list of tasks on ready queue
-	// other stuff
+	TaskSL mutexRef;									// list of tasks on mutex queue
+	int id;
 };
-void ?{}( Task & this ) with( this ) {
+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 ( Lnth ) {
-		Task & task = *new();							// create task node
+	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) iter;
+	SeqIter(TaskDL) sqiter;
 	TaskDL & dl;
+	TaskSL & sl;
 
 	sout | nlOff;
-	for ( over( iter, clustList ); iter >> dl; ) {		// print lists
-		sout | &task( dl );
+	for ( over( sqiter, clustList ); sqiter >> dl; ) {	// print lists
+		Task & tmp = task( dl ); sout | tmp.id;
+		// sout | task( dl ).id;
 	}
 	sout | nl;
-	for ( SeqIter(TaskDL) iter = { readyList }; iter >> dl; ) {
-		sout | &task( dl );
+	for ( over( sqiter, readyList ); sqiter >> dl; ) {
+		Task & tmp = task( dl ); sout | tmp.id;
+		// sout | task( dl ).id;
 	}
 	sout | nl;
-	for ( Lnth ) {										// remove nodes from clustList
+	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 ) ) );
 	}
 
-	// Stack(TaskDL) fredStack;
-	// for ( Lnth ) {
-	// 	Task & task = *new();							// create task node
-	// 	push( fredStack, task.clusterRef );				// insert on lists in opposite directions
-	// }
+	// 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/sequence.hfa
===================================================================
--- libcfa/src/bits/sequence.hfa	(revision 36ec8161fd0ba38150ac4c31f57ada643a92b7ef)
+++ libcfa/src/bits/sequence.hfa	(revision 3c6480b7368d9a06bf7eba78eea929236be05e5d)
@@ -211,4 +211,7 @@
 	struct SeqIter {
 		inline ColIter;
+		// The Sequence must be passed to pred and succ to check for the end of the Sequence and return 0p. Without
+		// 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;
 	};
@@ -251,4 +254,5 @@
 	struct SeqIterRev {
 		inline ColIter;
+		// See above for explanation.
 		Sequence(T) * seq;
 	};
Index: tests/.expect/manipulatorsOutput2.arm64.txt
===================================================================
--- tests/.expect/manipulatorsOutput2.arm64.txt	(revision 36ec8161fd0ba38150ac4c31f57ada643a92b7ef)
+++ tests/.expect/manipulatorsOutput2.arm64.txt	(revision 3c6480b7368d9a06bf7eba78eea929236be05e5d)
@@ -1,11 +1,11 @@
 
 0b0 0b11011 0b11011 0b11011 0b11011
-0b11100101 0b1111111111100101 0b11111111111111111111111111100101 0b11111111111111111111111111100101
+0b11100101 0b1111111111100101 0b11111111111111111111111111100101 0b1111111111111111111111111111111111111111111111111111111111100101
 0 033 033 033 033
-0345 0177745 037777777745 037777777745
+0345 0177745 037777777745 01777777777777777777745
 0 0x1b 0x1b 0x1b 0x1b
-0xe5 0xffe5 0xffffffe5 0xffffffe5
-0x0p+0. 0x1.b8p+4 0x1.b8p+4 0xd.cp+1
--0x1.b8p+4 -0x1.b8p+4 -0xd.cp+1
+0xe5 0xffe5 0xffffffe5 0xffffffffffffffe5
+0x0p+0. 0x1.b8p+4 0x1.b8p+4 0x1.b8p+4
+-0x1.b8p+4 -0x1.b8p+4 -0x1.b8p+4
 0.000000e+00 2.750000e+01 -2.750000e+01
 0B11011 0X1B 2.75E-09 0X1.B8P+4
