Index: libcfa/src/concurrency/coroutine.cfa
===================================================================
--- libcfa/src/concurrency/coroutine.cfa	(revision af00c4589447fcba274fd7a68bac3d284e211d76)
+++ libcfa/src/concurrency/coroutine.cfa	(revision 3c54a7185dc446b5486b9baf3a2ffb4fb967badb)
@@ -83,5 +83,5 @@
 
 void ^?{}(coroutine_desc& this) {
-      if(this.state != Halted) {
+      if(this.state != Halted && this.state != Start) {
             coroutine_desc * src = TL_GET( this_coroutine );
             coroutine_desc * dst = &this;
Index: src/Concurrency/Keywords.cc
===================================================================
--- src/Concurrency/Keywords.cc	(revision af00c4589447fcba274fd7a68bac3d284e211d76)
+++ src/Concurrency/Keywords.cc	(revision 3c54a7185dc446b5486b9baf3a2ffb4fb967badb)
@@ -575,5 +575,5 @@
 
 		//in reverse order :
-		// monitor_guard_t __guard = { __monitors, #, func };
+		// monitor_dtor_guard_t __guard = { __monitors, func };
 		body->push_front(
 			new DeclStmt( new ObjectDecl(
@@ -634,5 +634,5 @@
 		assert(generic_func);
 
-		//in reverse order :
+		// in reverse order :
 		// monitor_guard_t __guard = { __monitors, #, func };
 		body->push_front(
Index: src/Concurrency/Waitfor.cc
===================================================================
--- src/Concurrency/Waitfor.cc	(revision af00c4589447fcba274fd7a68bac3d284e211d76)
+++ src/Concurrency/Waitfor.cc	(revision 3c54a7185dc446b5486b9baf3a2ffb4fb967badb)
@@ -66,33 +66,34 @@
 void foo() {
 	while( true ) {
-
-		acceptable_t acceptables[3];
-		if( a < 1 ) {
-			acceptables[0].func = f;
-			acceptables[0].mon = a;
-		}
-		acceptables[1].func = g;
-		acceptables[1].mon = a;
-
-		acceptables[2].func = f;
-		acceptables[2].mon = a;
-		acceptables[2].is_dtor = true;
-
-		int ret = waitfor_internal( acceptables, swagl() );
-
-		switch( ret ) {
-			case 0:
-			{
-				bar();
+		{
+			acceptable_t acceptables[3];
+			if( a < 1 ) {
+				acceptables[0].func = f;
+				acceptables[0].mon = a;
 			}
-			case 1:
-			{
-				baz();
+			acceptables[1].func = g;
+			acceptables[1].mon = a;
+
+			acceptables[2].func = f;
+			acceptables[2].mon = a;
+			acceptables[2].is_dtor = true;
+
+			int ret = waitfor_internal( acceptables, swagl() );
+
+			switch( ret ) {
+				case 0:
+				{
+					bar();
+				}
+				case 1:
+				{
+					baz();
+				}
+				case 2:
+					signal(a);
+					{
+						break;
+					}
 			}
-			case 2:
-				signal(a);
-				{
-					break;
-				}
 		}
 	}
@@ -555,9 +556,11 @@
 					new ConstantExpr( Constant::from_ulong( i++ ) ),
 					{
-						clause.statement,
-						new BranchStmt(
-							"",
-							BranchStmt::Break
-						)
+						new CompoundStmt({
+							clause.statement,
+							new BranchStmt(
+								"",
+								BranchStmt::Break
+							)
+						})
 					}
 				)
@@ -570,9 +573,11 @@
 					new ConstantExpr( Constant::from_int( -2 ) ),
 					{
-						waitfor->timeout.statement,
-						new BranchStmt(
-							"",
-							BranchStmt::Break
-						)
+						new CompoundStmt({
+							waitfor->timeout.statement,
+							new BranchStmt(
+								"",
+								BranchStmt::Break
+							)
+						})
 					}
 				)
@@ -585,9 +590,11 @@
 					new ConstantExpr( Constant::from_int( -1 ) ),
 					{
-						waitfor->orelse.statement,
-						new BranchStmt(
-							"",
-							BranchStmt::Break
-						)
+						new CompoundStmt({
+							waitfor->orelse.statement,
+							new BranchStmt(
+								"",
+								BranchStmt::Break
+							)
+						})
 					}
 				)
