Index: doc/LaTeXmacros/common.tex
===================================================================
--- doc/LaTeXmacros/common.tex	(revision 43c89a78fd93abc599e03ce30605af5a82c4e1cc)
+++ doc/LaTeXmacros/common.tex	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
@@ -248,6 +248,6 @@
 	morekeywords={_Alignas,_Alignof,__alignof,__alignof__,asm,__asm,__asm__,_At,_Atomic,__attribute,__attribute__,auto,
 		_Bool,catch,catchResume,choose,_Complex,__complex,__complex__,__const,__const__,disable,dtype,enable,__extension__,
-		fallthrough,fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,otype,restrict,_Static_assert,
-		_Thread_local,throw,throwResume,trait,try,typeof,__typeof,__typeof__,},
+		fallthrough,fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,one_t,otype,restrict,_Static_assert,
+		_Thread_local,throw,throwResume,trait,try,typeof,__typeof,__typeof__,zero_t},
 }%
 
@@ -263,5 +263,5 @@
 escapechar=§,											% LaTeX escape in CFA code §...§ (section symbol), emacs: C-q M-'
 mathescape=true,										% LaTeX math escape in CFA code $...$
-%keepspaces=true,										% 
+%keepspaces=true,										%
 showstringspaces=false,									% do not show spaces with cup
 showlines=true,											% show blank lines at end of code
Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision 43c89a78fd93abc599e03ce30605af5a82c4e1cc)
+++ src/InitTweak/GenInit.cc	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
@@ -332,5 +332,6 @@
 			if ( ObjectDecl * field = dynamic_cast< ObjectDecl * >( member ) ) {
 				if ( isManaged( field ) ) {
-					managedTypes.insert( SymTab::Mangler::mangle( aggregateDecl ) );
+					StructInstType inst( Type::Qualifiers(), aggregateDecl );
+					managedTypes.insert( SymTab::Mangler::mangle( &inst ) );
 					break;
 				}
Index: src/libcfa/concurrency/monitor
===================================================================
--- src/libcfa/concurrency/monitor	(revision 43c89a78fd93abc599e03ce30605af5a82c4e1cc)
+++ src/libcfa/concurrency/monitor	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
@@ -30,3 +30,16 @@
 void leave(monitor *);
 
+struct monitor_guard {
+	monitor * m;
+};
+
+static inline void ?{}( monitor_guard * this, monitor * m ) {
+	this->m = m;
+	enter( this->m );
+}
+
+static inline void ^?{}( monitor_guard * this ) {
+	leave( this->m );
+}
+
 #endif //MONITOR_H
Index: src/libcfa/concurrency/monitor.c
===================================================================
--- src/libcfa/concurrency/monitor.c	(revision 43c89a78fd93abc599e03ce30605af5a82c4e1cc)
+++ src/libcfa/concurrency/monitor.c	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
@@ -44,4 +44,5 @@
 
 	unlock( &this->lock );
+
 	if( this->holder ) ScheduleThread( this->holder );
 }
Index: src/tests/.expect/globals.txt
===================================================================
--- src/tests/.expect/globals.txt	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
+++ src/tests/.expect/globals.txt	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
@@ -0,0 +1,9 @@
+static		inline		autogen		value
+no 		no 		no 		22
+no 		no 		yes		22
+no 		yes		no 		22
+no 		yes		yes		22
+yes		no 		no 		22
+yes		no 		yes		22
+yes		yes		no 		22
+yes		yes		yes		22
Index: src/tests/globals.c
===================================================================
--- src/tests/globals.c	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
+++ src/tests/globals.c	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
@@ -0,0 +1,83 @@
+#include <fstream>
+
+struct value_t {
+	int value;
+};
+
+void ?{}( value_t * this ) { this->value = 22; }
+
+//Standard case
+struct g_t {
+	value_t val;
+};
+
+void ?{}( g_t * this ) { (&this->val){}; }
+
+g_t g;
+
+//Autogen case
+struct ga_t {
+	value_t val;
+};
+
+ga_t ga;
+
+//Inline case
+struct gi_t;
+void ?{}( gi_t * this );
+
+struct gi_t {
+	value_t val;
+} gi;
+
+void ?{}( gi_t * this ) { (&this->val){}; }
+
+//Inline autogen case
+struct gia_t {
+	value_t val;
+} gia;
+
+//Static case
+struct gs_t {
+	value_t val;
+};
+
+void ?{}( gs_t * this ) { (&this->val){}; }
+
+static gs_t gs;
+
+//Static autogen case
+struct gsa_t {
+	value_t val;
+};
+
+static gsa_t gsa;
+
+//Static inline case
+struct gsi_t;
+void ?{}( gsi_t * this );
+
+static struct gsi_t {
+	value_t val;
+} gsi;
+
+void ?{}( gsi_t * this ) { (&this->val){}; }
+
+//Static inline autogen case
+static struct gsia_t {
+	value_t val;
+} gsia;
+
+int main() {
+	sout | "static\t\tinline\t\tautogen\t\tvalue" | endl;
+
+	sout | "no \t\tno \t\tno \t\t" | g.val.value    | endl;
+	sout | "no \t\tno \t\tyes\t\t" | ga.val.value   | endl;
+	sout | "no \t\tyes\t\tno \t\t" | gi.val.value   | endl;
+	sout | "no \t\tyes\t\tyes\t\t" | gia.val.value  | endl;
+	sout | "yes\t\tno \t\tno \t\t" | gs.val.value   | endl;
+	sout | "yes\t\tno \t\tyes\t\t" | gsa.val.value  | endl;
+	sout | "yes\t\tyes\t\tno \t\t" | gsi.val.value  | endl;
+	sout | "yes\t\tyes\t\tyes\t\t" | gsia.val.value | endl;
+
+}
Index: src/tests/monitor.c
===================================================================
--- src/tests/monitor.c	(revision 43c89a78fd93abc599e03ce30605af5a82c4e1cc)
+++ src/tests/monitor.c	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
@@ -16,7 +16,6 @@
 
 void increment( /*mutex*/ global_t * this ) {
-	enter( &this->m );
+	monitor_guard g = { &this->m };
 	this->value += 1;
-	leave( &this->m );
 }
 
Index: src/tests/simpleGenericTriple.c
===================================================================
--- src/tests/simpleGenericTriple.c	(revision 43c89a78fd93abc599e03ce30605af5a82c4e1cc)
+++ src/tests/simpleGenericTriple.c	(revision 167a9c8b98b56b3fbcaf2e4f2659519696a0f528)
@@ -28,5 +28,5 @@
   int x1 = 123, x3 = 456;
   double x2 = 999.123;
-  struct T3(int) Li = { x1, x2, x3 };
+  struct T3(int) Li = { x1, (int)x2, x3 };
   struct T3(int) Ri = { 9, 2, 3 };
   struct T3(int) reti = Li+Ri;
