Index: src/libcfa/bits/containers.h
===================================================================
--- src/libcfa/bits/containers.h	(revision ea7d2b051267e571f113e8dabae0d886eda94432)
+++ src/libcfa/bits/containers.h	(revision 0cf5b7992194658ccc6f30eae5069589577633a3)
@@ -15,7 +15,52 @@
 #pragma once
 
-#include <stddef.h>
+#include "bits/defs.h"
+#include "libhdr.h"
 
-#include "libhdr.h"
+//-----------------------------------------------------------------------------
+// Array
+//-----------------------------------------------------------------------------
+
+#ifdef __cforall
+	forall(dtype T)
+#else
+	#define T void
+#endif
+struct __small_array {
+	T *           data;
+	__lock_size_t size;
+};
+#undef T
+
+#ifdef __cforall
+	#define __small_array_t(T) __small_array(T)
+#else
+	#define __small_array_t(T) struct __small_array
+#endif
+
+#ifdef __cforall
+	// forall(otype T | sized(T))
+	// static inline void ?{}(__small_array(T) & this) {}
+
+	forall(dtype T | sized(T))
+	static inline T& ?[?]( __small_array(T) & this, __lock_size_t idx) {
+		return ((typeof(this.data))this.data)[idx];
+	}
+
+	forall(dtype T | sized(T))
+	static inline T& ?[?]( const __small_array(T) & this, __lock_size_t idx) {
+		return ((typeof(this.data))this.data)[idx];
+	}
+
+	forall(dtype T | sized(T))
+	static inline T* begin( const __small_array(T) & this ) {
+		return ((typeof(this.data))this.data);
+	}
+
+	forall(dtype T | sized(T))
+	static inline T* end( const __small_array(T) & this ) {
+		return ((typeof(this.data))this.data) + this.size;
+	}
+#endif
 
 //-----------------------------------------------------------------------------
@@ -23,5 +68,5 @@
 //-----------------------------------------------------------------------------
 
-#ifdef __CFORALL__
+#ifdef __cforall
 	trait is_node(dtype T) {
 		T*& get_next( T& );
@@ -32,5 +77,5 @@
 // Stack
 //-----------------------------------------------------------------------------
-#ifdef __CFORALL__
+#ifdef __cforall
 	forall(dtype TYPE | is_node(TYPE))
 	#define T TYPE
@@ -41,6 +86,7 @@
 	T * top;
 };
+#undef T
 
-#ifdef __CFORALL__
+#ifdef __cforall
 #define __stack_t(T) __stack(T)
 #else
@@ -48,12 +94,12 @@
 #endif
 
-#ifdef __CFORALL__
+#ifdef __cforall
 	forall(dtype T | is_node(T))
-	void ?{}( __stack(T) & this ) {
-		this.top = NULL;
+	static inline void ?{}( __stack(T) & this ) {
+		(this.top){ NULL };
 	}
 
 	forall(dtype T | is_node(T) | sized(T))
-	void push( __stack(T) & this, T * val ) {
+	static inline void push( __stack(T) & this, T * val ) {
 		verify( !get_next( *val ) );
 		get_next( *val ) = this.top;
@@ -62,5 +108,5 @@
 
 	forall(dtype T | is_node(T) | sized(T))
-	T * pop( __stack(T) & this ) {
+	static inline T * pop( __stack(T) & this ) {
 		T * top = this.top;
 		if( top ) {
@@ -75,6 +121,6 @@
 // Queue
 //-----------------------------------------------------------------------------
-#ifdef __CFORALL__
-	forall(dtype T | is_node(T))
+#ifdef __cforall
+	forall(dtype TYPE | is_node(TYPE))
 	#define T TYPE
 #else
@@ -85,14 +131,21 @@
 	T ** tail;
 };
+#undef T
 
-#ifdef __CFORALL__
+#ifdef __cforall
+#define __queue_t(T) __queue(T)
+#else
+#define __queue_t(T) struct __queue
+#endif
+
+#ifdef __cforall
 	forall(dtype T | is_node(T))
-	void ?{}( __queue(T) & this ) {
-		this.head = NULL;
-		this.tail = &this.head;
+	static inline void ?{}( __queue(T) & this ) {
+		(this.head){ NULL };
+		(this.tail){ &this.head };
 	}
 
 	forall(dtype T | is_node(T) | sized(T))
-	void append( __queue(T) & this, T * val ) {
+	static inline void append( __queue(T) & this, T * val ) {
 		verify(this.tail != NULL);
 		*this.tail = val;
@@ -101,5 +154,5 @@
 
 	forall(dtype T | is_node(T) | sized(T))
-	T * pop_head( __queue(T) & this ) {
+	static inline T * pop_head( __queue(T) & this ) {
 		T * head = this.head;
 		if( head ) {
@@ -114,5 +167,5 @@
 
 	forall(dtype T | is_node(T) | sized(T))
-	T * remove( __queue(T) & this, T ** it ) {
+	static inline T * remove( __queue(T) & this, T ** it ) {
 		T * val = *it;
 		verify( val );
Index: src/libcfa/bits/defs.h
===================================================================
--- src/libcfa/bits/defs.h	(revision ea7d2b051267e571f113e8dabae0d886eda94432)
+++ src/libcfa/bits/defs.h	(revision 0cf5b7992194658ccc6f30eae5069589577633a3)
@@ -17,4 +17,5 @@
 
 #include <stdbool.h>
+#include <stddef.h>
 #include <stdint.h>
 
@@ -22,2 +23,11 @@
 #define likely  (x)    __builtin_expect(!!(x), 1)
 #define thread_local _Thread_local
+
+typedef void (*fptr_t)();
+typedef int_fast16_t __lock_size_t;
+
+#ifdef __cforall
+#define __cfa_anonymous_object
+#else
+#define __cfa_anonymous_object __cfa_anonymous_object
+#endif
Index: src/libcfa/bits/locks.h
===================================================================
--- src/libcfa/bits/locks.h	(revision ea7d2b051267e571f113e8dabae0d886eda94432)
+++ src/libcfa/bits/locks.h	(revision 0cf5b7992194658ccc6f30eae5069589577633a3)
@@ -56,5 +56,5 @@
 } __ALIGN__;
 
-#ifdef __CFORALL__
+#ifdef __cforall
 	extern void yield( unsigned int );
 	extern thread_local struct thread_desc *    volatile this_thread;
