Index: doc/papers/general/evaluation/cfa-bench.c
===================================================================
--- doc/papers/general/evaluation/cfa-bench.c	(revision ad4458f259c8209f2c8cef98f845f5d060220fb3)
+++ doc/papers/general/evaluation/cfa-bench.c	(revision 986dd36f8bb08b2e2d657f1f7f3976f882f6b8f3)
@@ -10,9 +10,9 @@
 	stack(int) si, ti;
 
-	REPEAT_TIMED( "push_int", N, push( &si, vali ); )
+	REPEAT_TIMED( "push_int", N, push( si, vali ); )
 	TIMED( "copy_int", ti = si; )
-	TIMED( "clear_int", clear( &si ); )
-	REPEAT_TIMED( "pop_int", N, 
-		int xi = pop( &ti ); 
+	TIMED( "clear_int", clear( si ); )
+	REPEAT_TIMED( "pop_int", N,
+		int xi = pop( ti );
 		if ( xi > maxi ) { maxi = xi; } )
 	REPEAT_TIMED( "print_int", N/2, print( out, vali, ":", vali, "\n" ); )
@@ -21,9 +21,9 @@
 	stack(pair(_Bool, char)) sp, tp;
 
-	REPEAT_TIMED( "push_pair", N, push( &sp, valp ); )
+	REPEAT_TIMED( "push_pair", N, push( sp, valp ); )
 	TIMED( "copy_pair", tp = sp; )
-	TIMED( "clear_pair", clear( &sp ); )
-	REPEAT_TIMED( "pop_pair", N, 
-		pair(_Bool, char) xp = pop( &tp ); 
+	TIMED( "clear_pair", clear( sp ); )
+	REPEAT_TIMED( "pop_pair", N,
+		pair(_Bool, char) xp = pop( tp );
 		if ( xp > maxp ) { maxp = xp; } )
 	REPEAT_TIMED( "print_pair", N/2, print( out, valp, ":", valp, "\n" ); )
Index: doc/papers/general/evaluation/cfa-stack.c
===================================================================
--- doc/papers/general/evaluation/cfa-stack.c	(revision ad4458f259c8209f2c8cef98f845f5d060220fb3)
+++ doc/papers/general/evaluation/cfa-stack.c	(revision 986dd36f8bb08b2e2d657f1f7f3976f882f6b8f3)
@@ -7,10 +7,14 @@
 };
 
-forall(otype T) void ?{}(stack(T)* s) { (&s->head){ 0 }; }
+forall(otype T) void ?{}(stack(T)& s) { (s.head){ 0 }; }
 
-forall(otype T) void ?{}(stack(T)* s, stack(T) t) {
-	stack_node(T)** crnt = &s->head;
+forall(otype T) void ?{}(stack(T)& s, stack(T) t) {
+	stack_node(T)** crnt = &s.head;
 	for ( stack_node(T)* next = t.head; next; next = next->next ) {
-		*crnt = ((stack_node(T)*)malloc()){ next->value }; /***/
+		// *crnt = &(*(stack_node(T)*)malloc()){ next->value }; /***/
+		stack_node(T)* new_node = ((stack_node(T)*)malloc());
+		(*new_node){ next->value }; /***/
+		*crnt = new_node;
+
 		stack_node(T)* acrnt = *crnt;
 		crnt = &acrnt->next;
@@ -19,22 +23,25 @@
 }
 
-forall(otype T) stack(T) ?=?(stack(T)* s, stack(T) t) {
-	if ( s->head == t.head ) return *s;
+forall(otype T) stack(T) ?=?(stack(T)& s, stack(T) t) {
+	if ( s.head == t.head ) return s;
 	clear(s);
 	s{ t };
-	return *s;
+	return s;
 }
 
-forall(otype T) void ^?{}(stack(T)* s) { clear(s); }
+forall(otype T) void ^?{}(stack(T)& s) { clear(s); }
 
-forall(otype T) _Bool empty(const stack(T)* s) { return s->head == 0; }
+forall(otype T) _Bool empty(const stack(T)& s) { return s.head == 0; }
 
-forall(otype T) void push(stack(T)* s, T value) {
-	s->head = ((stack_node(T)*)malloc()){ value, s->head }; /***/
+forall(otype T) void push(stack(T)& s, T value) {
+	// s.head = &(*(stack_node(T)*)malloc()){ value, s.head }; /***/
+	stack_node(T)* new_node = ((stack_node(T)*)malloc());
+	(*new_node){ value, s.head }; /***/
+	s.head = new_node;
 }
 
-forall(otype T) T pop(stack(T)* s) {
-	stack_node(T)* n = s->head;
-	s->head = n->next;
+forall(otype T) T pop(stack(T)& s) {
+	stack_node(T)* n = s.head;
+	s.head = n->next;
 	T x = n->value;
 	^n{};
@@ -43,10 +50,10 @@
 }
 
-forall(otype T) void clear(stack(T)* s) {
-    for ( stack_node(T)* next = s->head; next; ) {
+forall(otype T) void clear(stack(T)& s) {
+    for ( stack_node(T)* next = s.head; next; ) {
 		stack_node(T)* crnt = next;
 		next = crnt->next;
 		delete(crnt);
 	}
-	s->head = 0;
+	s.head = 0;
 }
Index: doc/papers/general/evaluation/cfa-stack.h
===================================================================
--- doc/papers/general/evaluation/cfa-stack.h	(revision ad4458f259c8209f2c8cef98f845f5d060220fb3)
+++ doc/papers/general/evaluation/cfa-stack.h	(revision 986dd36f8bb08b2e2d657f1f7f3976f882f6b8f3)
@@ -6,11 +6,11 @@
 };
 
-forall(otype T) void ?{}(stack(T)* s);
-forall(otype T) void ?{}(stack(T)* s, stack(T) t);
-forall(otype T) stack(T) ?=?(stack(T)* s, stack(T) t);
-forall(otype T) void ^?{}(stack(T)* s);
+forall(otype T) void ?{}(stack(T)& s);
+forall(otype T) void ?{}(stack(T)& s, stack(T) t);
+forall(otype T) stack(T) ?=?(stack(T)& s, stack(T) t);
+forall(otype T) void ^?{}(stack(T)& s);
 
-forall(otype T) _Bool empty(const stack(T)* s);
-forall(otype T) void push(stack(T)* s, T value);
-forall(otype T) T pop(stack(T)* s);
-forall(otype T) void clear(stack(T)* s);
+forall(otype T) _Bool empty(const stack(T)& s);
+forall(otype T) void push(stack(T)& s, T value);
+forall(otype T) T pop(stack(T)& s);
+forall(otype T) void clear(stack(T)& s);
