Index: libcfa/src/concurrency/io/setup.cfa
===================================================================
--- libcfa/src/concurrency/io/setup.cfa	(revision a5040fe1b04eee9b39e6929877b6b62af7ec64a5)
+++ libcfa/src/concurrency/io/setup.cfa	(revision 11054ebabd4e6fc888222295c6cc3ff8811ba9fa)
@@ -110,5 +110,5 @@
 		this.arbiter = cl.io.arbiter;
 		this.ext_sq.empty = true;
-		(this.ext_sq.blocked){};
+		(this.ext_sq.queue){};
 		__io_uring_setup( this, cl.io.params, proc->idle );
 		__cfadbg_print_safe(io_core, "Kernel I/O : Created ring for io_context %u (%p)\n", this.fd, &this);
@@ -329,12 +329,8 @@
 //=============================================================================================
 	void ?{}( $io_arbiter & this ) {
-		this.pending.flag = false;
-	}
-
-	void ^?{}( $io_arbiter & mutex this ) {
-		// /* paranoid */ verify( empty(this.assigned) );
-		// /* paranoid */ verify( empty(this.available) );
-		/* paranoid */ verify( is_empty(this.pending.blocked) );
-	}
+		this.pending.empty = true;
+	}
+
+	void ^?{}( $io_arbiter & this ) {}
 
 	$io_arbiter * create(void) {
Index: libcfa/src/concurrency/io/types.hfa
===================================================================
--- libcfa/src/concurrency/io/types.hfa	(revision a5040fe1b04eee9b39e6929877b6b62af7ec64a5)
+++ libcfa/src/concurrency/io/types.hfa	(revision 11054ebabd4e6fc888222295c6cc3ff8811ba9fa)
@@ -22,4 +22,5 @@
 
 #include "bits/locks.hfa"
+#include "bits/queue.hfa"
 #include "kernel/fwd.hfa"
 
@@ -95,12 +96,29 @@
 	};
 
+	struct __outstanding_io {
+		inline Colable;
+		single_sem sem;
+	};
+	static inline __outstanding_io *& Next( __outstanding_io * n ) { return (__outstanding_io *)Next( (Colable *)n ); }
+
+	struct __outstanding_io_queue {
+		__spinlock_t lock;
+		Queue(__outstanding_io) queue;
+		volatile bool empty;
+	};
+
+	struct __external_io {
+		inline __outstanding_io;
+		__u32 * idxs;
+		__u32 have;
+		bool lazy;
+	};
+
+
 	struct __attribute__((aligned(128))) $io_context {
 		$io_arbiter * arbiter;
 		processor * proc;
 
-		struct {
-			volatile bool empty;
-			condition blocked;
-		} ext_sq;
+		__outstanding_io_queue ext_sq;
 
 		struct __sub_ring_t sq;
@@ -110,10 +128,13 @@
 	};
 
-	monitor __attribute__((aligned(128))) $io_arbiter {
-		struct {
-			condition blocked;
-			$io_context * ctx;
-			volatile bool flag;
-		} pending;
+	struct __pending_alloc {
+		inline __outstanding_io;
+		__u32 * idxs;
+		__u32 want;
+		$io_context * ctx;
+	};
+
+	struct __attribute__((aligned(128))) $io_arbiter {
+		__outstanding_io_queue pending;
 	};
 
