Index: src/Concurrency/Actors.cpp
===================================================================
--- src/Concurrency/Actors.cpp	(revision 566874089f5b61812f19101bcae72ac96a7e064d)
+++ src/Concurrency/Actors.cpp	(revision 7e4bd9b6c3131065e368131bf17e6e9264111243)
@@ -285,5 +285,5 @@
             ));
 
-            // Generates: new_req{ &receiver, &msg, fn };
+            // Generates: new_req{ &receiver, (actor *)&receiver, &msg, (message *)&msg, fn };
             sendBody->push_back( new ExprStmt(
                 decl->location,
@@ -294,5 +294,7 @@
 						new NameExpr( decl->location, "new_req" ),
                         new AddressExpr( new NameExpr( decl->location, "receiver" ) ),
+                        new CastExpr( decl->location, new AddressExpr( new NameExpr( decl->location, "receiver" ) ), new PointerType( new StructInstType( *actorDecl ) ), ExplicitCast ),
                         new AddressExpr( new NameExpr( decl->location, "msg" ) ),
+                        new CastExpr( decl->location, new AddressExpr( new NameExpr( decl->location, "msg" ) ), new PointerType( new StructInstType( *msgDecl ) ), ExplicitCast ),
                         new NameExpr( decl->location, "fn" )
 					}
Index: src/Virtual/VirtualDtor.cpp
===================================================================
--- src/Virtual/VirtualDtor.cpp	(revision 566874089f5b61812f19101bcae72ac96a7e064d)
+++ src/Virtual/VirtualDtor.cpp	(revision 7e4bd9b6c3131065e368131bf17e6e9264111243)
@@ -146,16 +146,18 @@
 
             CompoundStmt * dtorBody = mutate( decl->stmts.get() );
-            // Adds the following to the end of any actor/message dtor:
+            // Adds the following to the start of any actor/message dtor:
             //  __CFA_dtor_shutdown( this );
-            dtorBody->push_front( new ExprStmt(
-                decl->location,
-				new UntypedExpr (
-                    decl->location,
-					new NameExpr( decl->location, "__CFA_dtor_shutdown" ),
-					{
-                        new NameExpr( decl->location, decl->params.at(0)->name )
-					}
-				)
-			));
+            dtorBody->push_front( 
+                new IfStmt( decl->location,
+                    new UntypedExpr (
+                        decl->location,
+                        new NameExpr( decl->location, "__CFA_dtor_shutdown" ),
+                        {
+                            new NameExpr( decl->location, decl->params.at(0)->name )
+                        }
+                    ),
+                    new ReturnStmt( decl->location, nullptr )
+                )
+            );
             return;
         }
