Index: src/libcfa/exception.c
===================================================================
--- src/libcfa/exception.c	(revision fa4805fa298698201db6b7292ed9cb1cc00af9ef)
+++ src/libcfa/exception.c	(revision 8c97ee7b0cbd7af6ac923a33e23f36a01868ba93)
@@ -44,16 +44,16 @@
 // RESUMPTION ================================================================
 
-void __cfaehm__throw_resume(exception except) {
-
-	// DEBUG
-	printf("Throwing resumption exception %d\n", except);
-
-	struct __try_resume_node * original_head = shared_stack.current_resume;
-	struct __try_resume_node * current =
+void __cfaehm__throw_resumption(exception * except) {
+
+	// DEBUG
+	printf("Throwing resumption exception %d\n", *except);
+
+	struct __cfaehm__try_resume_node * original_head = shared_stack.current_resume;
+	struct __cfaehm__try_resume_node * current =
 		(original_head) ? original_head->next : shared_stack.top_resume;
 
 	for ( ; current ; current = current->next) {
 		shared_stack.current_resume = current;
-		if (current->try_to_handle(except)) {
+		if (current->handler(except)) {
 			shared_stack.current_resume = original_head;
 			return;
@@ -61,9 +61,9 @@
 	}
 
-	printf("Unhandled exception %d\n", except);
+	printf("Unhandled exception %d\n", *except);
 	shared_stack.current_resume = original_head;
 
 	// Fall back to termination:
-	__cfaehm__throw_terminate(except);
+	__cfaehm__throw_termination(except);
 	// TODO: Default handler for resumption.
 }
@@ -73,12 +73,12 @@
  * after the node is built but before it is made the top node.
  */
-void __try_resume_setup(struct __try_resume_node * node,
-                        bool (*handler)(exception except)) {
+void __cfaehm__try_resume_setup(struct __cfaehm__try_resume_node * node,
+                        int (*handler)(exception * except)) {
 	node->next = shared_stack.top_resume;
-	node->try_to_handle = handler;
+	node->handler = handler;
 	shared_stack.top_resume = node;
 }
 
-void __try_resume_cleanup(struct __try_resume_node * node) {
+void __cfaehm__try_resume_cleanup(struct __cfaehm__try_resume_node * node) {
 	shared_stack.top_resume = node->next;
 }
@@ -111,10 +111,10 @@
 }
 
-void __cfaehm__throw_terminate( int val ) {
+void __cfaehm__throw_termination( exception * val ) {
 	// Store the current exception
-	shared_stack.current_exception = val;
-
-	// DEBUG
-	printf("Throwing termination exception %d\n", val);
+	shared_stack.current_exception = *val;
+
+	// DEBUG
+	printf("Throwing termination exception %d\n", *val);
 
 	// Call stdlibc to raise the exception
@@ -147,9 +147,9 @@
 
 // Nesting this the other way would probably be faster.
-void __cfaehm__rethrow_terminate(void) {
+void __cfaehm__rethrow_termination(void) {
 	// DEBUG
 	printf("Rethrowing termination exception\n");
 
-	__cfaehm__throw_terminate(shared_stack.current_exception);
+	__cfaehm__throw_termination(&shared_stack.current_exception);
 }
 
@@ -322,7 +322,7 @@
 // for details
 __attribute__((noinline))
-void __try_terminate(void (*try_block)(),
-		void (*catch_block)(int index, exception except),
-		__attribute__((unused)) int (*match_block)(exception except)) {
+void __cfaehm__try_terminate(void (*try_block)(),
+		void (*catch_block)(int index, exception * except),
+		__attribute__((unused)) int (*match_block)(exception * except)) {
 	//! volatile int xy = 0;
 	//! printf("%p %p %p %p\n", &try_block, &catch_block, &match_block, &xy);
@@ -364,5 +364,5 @@
 	// Exception handler
 	catch_block(shared_stack.current_handler_index,
-	            shared_stack.current_exception);
+	            &shared_stack.current_exception);
 }
 
@@ -384,11 +384,11 @@
 	// Body uses language specific data and therefore could be modified arbitrarily
 	".LLSDACSBCFA2:\n"						// BODY start
-	"	.uleb128 .TRYSTART-__try_terminate\n"		// Handled area start  (relative to start of function)
+	"	.uleb128 .TRYSTART-__cfaehm__try_terminate\n"		// Handled area start  (relative to start of function)
 	"	.uleb128 .TRYEND-.TRYSTART\n"				// Handled area length
-	"	.uleb128 .CATCH-__try_terminate\n"				// Hanlder landing pad adress  (relative to start of function)
+	"	.uleb128 .CATCH-__cfaehm__try_terminate\n"				// Hanlder landing pad adress  (relative to start of function)
 	"	.uleb128 1\n"						// Action code, gcc seems to use always 0
 	".LLSDACSECFA2:\n"						// BODY end
 	"	.text\n"							// TABLE footer
-	"	.size	__try_terminate, .-__try_terminate\n"
+	"	.size	__cfaehm__try_terminate, .-__cfaehm__try_terminate\n"
 	"	.ident	\"GCC: (Ubuntu 6.2.0-3ubuntu11~16.04) 6.2.0 20160901\"\n"
 //	"	.section	.note.GNU-stack,\"x\",@progbits\n"
