Index: libcfa/src/concurrency/invoke.c
===================================================================
--- libcfa/src/concurrency/invoke.c	(revision 212c2187acc76b800c2bbe0c4524f610ab71dac8)
+++ libcfa/src/concurrency/invoke.c	(revision b2f6113b6922a9164605cb05cd095dc177208621)
@@ -122,5 +122,6 @@
 	void (*invoke)(void *)
 ) {
-	struct coStack_t* stack = &get_coroutine( this )->stack;
+	struct coroutine_desc * cor = get_coroutine( this );
+	struct __stack_t * stack = cor->stack.storage;
 
 #if defined( __i386 )
@@ -136,12 +137,14 @@
 	};
 
-	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
-	((struct machine_context_t *)stack->context)->FP = NULL;		// terminate stack with NULL fp
+	cor->context.SP = (char *)stack->base - sizeof( struct FakeStack );
+	cor->context.FP = NULL;		// terminate stack with NULL fp
 
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->dummyReturn = NULL;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->argument[0] = this;     // argument to invoke
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->rturn = invoke;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
+	struct FakeStack *fs = (struct FakeStack *)cor->context.SP;
+
+	fs->dummyReturn = NULL;
+	fs->argument[0] = this;     // argument to invoke
+	fs->rturn = invoke;
+	fs->mxcr = 0x1F80; //Vol. 2A 3-520
+	fs->fcw = 0x037F;  //Vol. 1 8-7
 
 #elif defined( __x86_64 )
@@ -155,13 +158,15 @@
 	};
 
-	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
-	((struct machine_context_t *)stack->context)->FP = NULL;		// terminate stack with NULL fp
+	cor->context.SP = (char *)stack->base - sizeof( struct FakeStack );
+	cor->context.FP = NULL;		// terminate stack with NULL fp
 
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->dummyReturn = NULL;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->rturn = CtxInvokeStub;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[0] = this;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[1] = invoke;
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
-	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
+	struct FakeStack *fs = (struct FakeStack *)cor->context.SP;
+
+	fs->dummyReturn = NULL;
+	fs->rturn = CtxInvokeStub;
+	fs->fixedRegisters[0] = this;
+	fs->fixedRegisters[1] = invoke;
+	fs->mxcr = 0x1F80; //Vol. 2A 3-520
+	fs->fcw = 0x037F;  //Vol. 1 8-7
 
 #elif defined( __ARM_ARCH )
@@ -173,8 +178,8 @@
 	};
 
-	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
-	((struct machine_context_t *)stack->context)->FP = NULL;
+	cor->context.SP = (char *)stack->base - sizeof( struct FakeStack );
+	cor->context.FP = NULL;
 
-	struct FakeStack *fs = (struct FakeStack *)((struct machine_context_t *)stack->context)->SP;
+	struct FakeStack *fs = (struct FakeStack *)cor->context.SP;
 
 	fs->intRegs[8] = CtxInvokeStub;
