Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision f1e012b7aa1aaea6aa2dde9bcb3b0e83dcf13824)
+++ src/InitTweak/FixInit.cc	(revision ca1c11f85e5435950b3def78e91b55d90e41c1e0)
@@ -10,6 +10,6 @@
 // Created On       : Wed Jan 13 16:29:30 2016
 // Last Modified By : Rob Schluntz
-// Last Modified On : Tue Jan 19 13:25:13 2016
-// Update Count     : 27
+// Last Modified On : Tue Jan 19 16:36:59 2016
+// Update Count     : 30
 //
 
@@ -73,5 +73,5 @@
 	CompoundStmt * FixInit::mutate( CompoundStmt * compoundStmt ) {
 		std::list< Statement * > & statements = compoundStmt->get_kids();
-		for ( std::list< Statement * >::iterator it = statements.begin(); it != statements.end(); ++it ) {
+		for ( std::list< Statement * >::iterator it = statements.begin(); it != statements.end(); ) {
 			// remove if instrinsic destructor statement
 			// xxx - test user manually calling intrinsic functions - what happens?
@@ -81,11 +81,14 @@
 						if ( function->get_var()->get_name() == "^?{}" && function->get_var()->get_linkage() == LinkageSpec::Intrinsic ) {
 							statements.erase(it++);
+							continue;
+						} else {
 						}
 					}
 				}
 			}
+			++it;
 		}
 		// mutate non-destructor statements
-		return Mutator::mutate( compoundStmt );
+		return PolyMutator::mutate( compoundStmt );
 	}
 
Index: src/main.cc
===================================================================
--- src/main.cc	(revision f1e012b7aa1aaea6aa2dde9bcb3b0e83dcf13824)
+++ src/main.cc	(revision ca1c11f85e5435950b3def78e91b55d90e41c1e0)
@@ -10,6 +10,6 @@
 // Created On       : Fri May 15 23:12:02 2015
 // Last Modified By : Rob Schluntz
-// Last Modified On : Tue Jan 19 13:16:23 2016
-// Update Count     : 185
+// Last Modified On : Tue Jan 19 16:28:13 2016
+// Update Count     : 194
 //
 
@@ -62,4 +62,5 @@
 	astp = false,
 	bresolvep = false,
+	ctorinitp = false,
 	exprp = false,
 	expraltp = false,
@@ -75,9 +76,10 @@
 	codegenp = false;
 
-enum { Ast, Bresolver, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
+enum { Ast, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
 
 static struct option long_opts[] = {
 	{ "ast", no_argument, 0, Ast },
 	{ "before-resolver", no_argument, 0, Bresolver },
+	{ "ctorinitfix", no_argument, 0, CtorInitFix },
 	{ "expr", no_argument, 0, Expr },
 	{ "expralt", no_argument, 0, ExprAlt },
@@ -102,5 +104,5 @@
 
 	int c;
-	while ( (c = getopt_long( argc, argv, "abefglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
+	while ( (c = getopt_long( argc, argv, "abcefFglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
 		switch ( c ) {
 		  case Ast:
@@ -111,4 +113,8 @@
 		  case 'b':										// print before resolver steps
 			bresolvep = true;
+			break;
+			case CtorInitFix:
+			case 'c':
+			ctorinitp = true;
 			break;
 		  case Expr:
@@ -264,4 +270,5 @@
 		if ( exprp ) {
 			dump( translationUnit );
+			return 0;
 		}
 
@@ -269,4 +276,8 @@
 		// fix ObjectDecl - replaces ConstructorInit nodes
 		InitTweak::fix( translationUnit );
+		if ( ctorinitp ) {
+			dump ( translationUnit );
+			return 0;
+		}
 
 		OPTPRINT( "instantiateGeneric" )
