Index: src/examples/gc_no_raii/premake4.lua
===================================================================
--- src/examples/gc_no_raii/premake4.lua	(revision d41280e1c786301d271ddcab3018dd33565e37b5)
+++ src/examples/gc_no_raii/premake4.lua	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
@@ -42,5 +42,5 @@
 		linkoptions (linkOptionList)
 		includedirs (includeDirList)
-		files { "../fstream.c", "../iostream.c", "../iterator.c", "src/**.c" }
+		files { "src/**.c" }
 
 	configuration "debug"
Index: src/examples/gc_no_raii/src/gcpointers.c
===================================================================
--- src/examples/gc_no_raii/src/gcpointers.c	(revision d41280e1c786301d271ddcab3018dd33565e37b5)
+++ src/examples/gc_no_raii/src/gcpointers.c	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
@@ -3,43 +3,43 @@
 #include "gc.h"
 #include "internal/collector.h"
-#include "internal/object_header.h"
+//#include "internal/object_header.h"
 // #include "internal/state.h"
-
+/*
 void register_ptr(gcpointer_t* this)
 {
-	if(gcpointer_null(this)) return;
-
-	_Bool managed = gc_is_managed(this);
-
-	if(managed)
-	{
-		gc_object_header* obj = gc_get_object_for_ref(gc_get_state(), (void*)this);
-		check(obj);
-		check(gc_obj_is_valide(obj));
-		check(gc_is_managed(this) == gc_is_managed(obj->type_chain) || obj->type_chain == NULL);
-		this->next = obj->type_chain;
-		obj->type_chain = this;
-		check(obj->is_valide());
-	}
-	else
-	{
-		gc_object_header* obj = gc_get_object_ptr((void*)this->ptr);
-		check(obj);
-		check(gc_obj_is_valide(obj));
-		check(gc_is_managed(this) == gc_is_managed(obj->root_chain) || obj->root_chain == NULL);
-		this->next = obj->root_chain;
-		obj->root_chain = this;
-		check(gc_obj_is_valide(obj));
-	}
+	// if(gcpointer_null(this)) return;
+	//
+	// _Bool managed = gc_is_managed(this);
+	//
+	// if(managed)
+	// {
+	// 	gc_object_header* obj = gc_get_object_for_ref(gc_get_state(), (void*)this);
+	// 	check(obj);
+	// 	check(gc_obj_is_valide(obj));
+	// 	check(gc_is_managed(this) == gc_is_managed(obj->type_chain) || obj->type_chain == NULL);
+	// 	this->next = obj->type_chain;
+	// 	obj->type_chain = this;
+	// 	check(obj->is_valide());
+	// }
+	// else
+	// {
+	// 	gc_object_header* obj = gc_get_object_ptr((void*)this->ptr);
+	// 	check(obj);
+	// 	check(gc_obj_is_valide(obj));
+	// 	check(gc_is_managed(this) == gc_is_managed(obj->root_chain) || obj->root_chain == NULL);
+	// 	this->next = obj->root_chain;
+	// 	obj->root_chain = this;
+	// 	check(gc_obj_is_valide(obj));
+	// }
 }
 
 void unregister_ptr(gcpointer_t* this)
 {
-	if(gcpointer_null(this)) return;
-
-	gcpointer_t** prev_next_ptr = gc_find_previous_ref(this);
-	check((*prev_next_ptr) == this);
-
-	(*prev_next_ptr) = this->next;
+	// if(gcpointer_null(this)) return;
+	//
+	// gcpointer_t** prev_next_ptr = gc_find_previous_ref(this);
+	// check((*prev_next_ptr) == this);
+	//
+	// (*prev_next_ptr) = this->next;
 }
 
@@ -99,3 +99,3 @@
 {
 	return this->ptr == (intptr_t)NULL;
-}
+}*/
Index: src/examples/gc_no_raii/src/gctest.c
===================================================================
--- src/examples/gc_no_raii/src/gctest.c	(revision d41280e1c786301d271ddcab3018dd33565e37b5)
+++ src/examples/gc_no_raii/src/gctest.c	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
@@ -1,5 +1,5 @@
+#include <fstream>
 
 #include "gc.h"
-#include "fstream.h"
 
 int main() {
Index: src/examples/gc_no_raii/src/internal/collector.c
===================================================================
--- src/examples/gc_no_raii/src/internal/collector.c	(revision d41280e1c786301d271ddcab3018dd33565e37b5)
+++ src/examples/gc_no_raii/src/internal/collector.c	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
@@ -6,5 +6,5 @@
 #include <string.h>
 
-#include "fstream.h"
+#include <fstream>
 
 #include "memory_pool.h"
Index: src/examples/gc_no_raii/src/internal/collector.h
===================================================================
--- src/examples/gc_no_raii/src/internal/collector.h	(revision d41280e1c786301d271ddcab3018dd33565e37b5)
+++ src/examples/gc_no_raii/src/internal/collector.h	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
@@ -6,12 +6,11 @@
 #include "tools.h"
 
-#include "gcpointers.h"
-#include "internal/collector.h"
-#include "internal/gc_tools.h"
-#include "internal/globals.h"
+//#include "gcpointers.h"
+//#include "internal/gc_tools.h"
+//#include "internal/globals.h"
 #include "internal/object_header.h"
-#include "internal/state.h"
+//#include "internal/state.h"
 #include "tools/worklist.h"
-
+/*
 inline bool gc_is_managed(void* address)
 {
@@ -27,5 +26,5 @@
 inline gc_memory_pool* gc_pool_of(void* address)
 {
-	return (struct gc_memory_pool*)(((intptr_t)address) & POOL_PTR_MASK);
+	//return (struct gc_memory_pool*)(((intptr_t)address) & POOL_PTR_MASK);
 }
 
@@ -47,2 +46,3 @@
 
 void gc_scan_object(struct gc_object_header* object, worklist_t* worklist);
+*/
Index: src/examples/gc_no_raii/src/internal/state.c
===================================================================
--- src/examples/gc_no_raii/src/internal/state.c	(revision d41280e1c786301d271ddcab3018dd33565e37b5)
+++ src/examples/gc_no_raii/src/internal/state.c	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
@@ -1,15 +1,15 @@
 #include "state.h"
 
-#include <stdlib.h>
-
-//general purpouse includes
-#include "tools.h"
-
-//platform abstraction includes
-#include "allocate-pool.h"
-
-//gc internal includes
-// #include "globals.h"
-#include "memory_pool.h"
+// #include <stdlib.h>
+//
+// //general purpouse includes
+// #include "tools.h"
+//
+// //platform abstraction includes
+// #include "allocate-pool.h"
+//
+// //gc internal includes
+// // #include "globals.h"
+// #include "memory_pool.h"
 // #include "memory_pool_iterator.h"
 // #include "object_header.h"
@@ -25,17 +25,17 @@
 // #endif
 
-void gc_state_ctor(gc_state* state)
-{
-	state->from_code = 0;
-	state->to_space = NULL;
-	state->from_space = NULL;
-	state->total_space = 0;
-	state->used_space = 0;
-	// state->pools_table();
-
-	gc_allocate_pool(state);
-
-	state->is_initialized = true;
-}
+// void gc_state_ctor(gc_state* state)
+// {
+// 	state->from_code = 0;
+// 	state->to_space = NULL;
+// 	state->from_space = NULL;
+// 	state->total_space = 0;
+// 	state->used_space = 0;
+// 	// state->pools_table();
+//
+// 	gc_allocate_pool(state);
+//
+// 	state->is_initialized = true;
+// }
 
 // bool state::is_in_heap(void* address) const
@@ -59,31 +59,31 @@
 // }
 //
-gc_object_header* gc_get_object_for_ref(gc_state* state, void* member)
-{
-	intptr_t target = ((intptr_t)member);
-	if(!gc_is_in_heap(state, member)) return NULL;
-
-	gc_memory_pool* pool = gc_pool_of(member);
-	gc_pool_object_iterator it = gc_pool_iterator_for(pool, member);
-	gc_pool_object_iterator end = gc_pool_end(pool);
-
-	while(it != end)
-	{
-		gc_object_header* object = *it;
-		{
-			intptr_t start = ((intptr_t)object);
-			intptr_t end = ((intptr_t)start + object->size);
-			if(start < target && end > target)
-			{
-				return object;
-			}
-		}
-		++it;
-	}
-
-	checkf(false, "is_in_heap() and iterator_for() return inconsistent data");
-	abort();
-	return NULL;
-}
+// gc_object_header* gc_get_object_for_ref(gc_state* state, void* member)
+// {
+// 	intptr_t target = ((intptr_t)member);
+// 	if(!gc_is_in_heap(state, member)) return NULL;
+//
+// 	gc_memory_pool* pool = gc_pool_of(member);
+// 	gc_pool_object_iterator it = gc_pool_iterator_for(pool, member);
+// 	gc_pool_object_iterator end = gc_pool_end(pool);
+//
+// 	while(it != end)
+// 	{
+// 		gc_object_header* object = *it;
+// 		{
+// 			intptr_t start = ((intptr_t)object);
+// 			intptr_t end = ((intptr_t)start + object->size);
+// 			if(start < target && end > target)
+// 			{
+// 				return object;
+// 			}
+// 		}
+// 		++it;
+// 	}
+//
+// 	checkf(false, "is_in_heap() and iterator_for() return inconsistent data");
+// 	abort();
+// 	return NULL;
+// }
 //
 // void* state::try_allocate(size_t size)
Index: src/examples/gc_no_raii/src/tools/worklist.h
===================================================================
--- src/examples/gc_no_raii/src/tools/worklist.h	(revision d41280e1c786301d271ddcab3018dd33565e37b5)
+++ src/examples/gc_no_raii/src/tools/worklist.h	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
@@ -4,4 +4,6 @@
 #include <stdint.h>
 
+#include "vector.h"
+/*
 typedef intptr_t* worklist_element_t;
 
@@ -13,2 +15,5 @@
 
 void push_back(worklist_t* worklist, worklist_element_t element);
+*/
+
+//typedef vector(intptr_t*) worklist_t;
Index: src/examples/gc_no_raii/src/vector.h
===================================================================
--- src/examples/gc_no_raii/src/vector.h	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
+++ src/examples/gc_no_raii/src/vector.h	(revision c44e6220a6e2d35bc4df195fa8e088f34d12387f)
@@ -0,0 +1,17 @@
+
+
+context allocator(type T, type all) {
+	T realloc(all*, size_t);
+};
+
+forall(type T, type all | allocator(T, all))
+struct vector
+{
+	T *m_data;
+};
+
+// forall(type T, type all)
+// void push_back(vector(T, all)* this, T value)
+// {
+// 	(*(this->m_data)) = value;
+// }
