Index: doc/generic_types/evaluation/bench.h
===================================================================
--- doc/generic_types/evaluation/bench.h	(revision a0ad7dc9c1fb88ba2a6f635f0b103f2eb1380169)
+++ doc/generic_types/evaluation/bench.h	(revision d919f471068ed87347669886083a44de531c1614)
@@ -1,8 +1,9 @@
+#pragma once
+
 #include <stdio.h>
 #include <time.h>
 
- // #define N 50000000
- #define N 5
-
+ #define N 50000000
+ 
 
 long ms_between(clock_t start, clock_t end) {
@@ -11,10 +12,10 @@
 
 #define TIMED(name, code) { \
-	clock_t start, end; \
-	start = clock(); \
+	clock_t _start, _end; \
+	_start = clock(); \
 	code \
-	end = clock(); \
-	printf("%s:\t%7ld ms\n", name, ms_between(start, end)); \
+	_end = clock(); \
+	printf("%s:\t%7ld ms\n", name, ms_between(_start, _end)); \
 }
 
-#define REPEAT_TIMED(name, code) TIMED( name, for (int i = 0; i < N; ++i) { code } )
+#define REPEAT_TIMED(name, code) TIMED( name, for (int _i = 0; _i < N; ++_i) { code } )
Index: doc/generic_types/evaluation/c-stack.c
===================================================================
--- doc/generic_types/evaluation/c-stack.c	(revision a0ad7dc9c1fb88ba2a6f635f0b103f2eb1380169)
+++ doc/generic_types/evaluation/c-stack.c	(revision d919f471068ed87347669886083a44de531c1614)
@@ -31,4 +31,5 @@
 		free(crnt);
 	}
+	s->head = NULL;
 }
 
Index: doc/generic_types/evaluation/c-stack.h
===================================================================
--- doc/generic_types/evaluation/c-stack.h	(revision a0ad7dc9c1fb88ba2a6f635f0b103f2eb1380169)
+++ doc/generic_types/evaluation/c-stack.h	(revision d919f471068ed87347669886083a44de531c1614)
@@ -1,2 +1,4 @@
+#pragma once
+
 struct stack_node;
 
Index: doc/generic_types/evaluation/cfa-stack.c
===================================================================
--- doc/generic_types/evaluation/cfa-stack.c	(revision a0ad7dc9c1fb88ba2a6f635f0b103f2eb1380169)
+++ doc/generic_types/evaluation/cfa-stack.c	(revision d919f471068ed87347669886083a44de531c1614)
@@ -1,2 +1,3 @@
+#include <assert>
 #include <stdlib>
 #include "cfa-stack.h"
@@ -9,4 +10,16 @@
 forall(otype T) void ?{}(stack(T)* s) {
 	(&s->head){ 0 };
+}
+
+forall(otype T) void copy(stack(T)* s, stack(T)* t) {
+	stack_node(T)** crnt = &s->head;
+	stack_node(T)* next = t->head;
+	while ( next ) {
+		*crnt = ((stack_node(T)*)malloc()){ next->value };
+		stack_node(T)* acrnt = *crnt;
+		crnt = &acrnt->next;
+		next = next->next;
+	}
+	*crnt = 0;
 }
 
@@ -57,3 +70,4 @@
 		delete(crnt);
 	}
+	s->head = 0;
 }
Index: doc/generic_types/evaluation/cfa-stack.h
===================================================================
--- doc/generic_types/evaluation/cfa-stack.h	(revision a0ad7dc9c1fb88ba2a6f635f0b103f2eb1380169)
+++ doc/generic_types/evaluation/cfa-stack.h	(revision d919f471068ed87347669886083a44de531c1614)
@@ -1,2 +1,4 @@
+#pragma once
+
 forall(otype T) struct stack_node;
 
Index: doc/generic_types/evaluation/cpp-stack.h
===================================================================
--- doc/generic_types/evaluation/cpp-stack.h	(revision a0ad7dc9c1fb88ba2a6f635f0b103f2eb1380169)
+++ doc/generic_types/evaluation/cpp-stack.h	(revision d919f471068ed87347669886083a44de531c1614)
@@ -1,2 +1,4 @@
+#pragma once
+
 #include <utility>
 
