Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision e4d3cebea9b65b73a14d75ede42b6858dafb71f5)
+++ src/InitTweak/GenInit.cc	(revision 2be10237217d3203f88d37d1da72d6ec3736ab71)
@@ -145,5 +145,7 @@
 				if ( ArrayType * at = dynamic_cast< ArrayType * >( objDecl->get_type() ) ) {
 					// call into makeArrayFunction from validate.cc to generate calls to ctor/dtor for each element of array
-					// TODO: walk initializer and generate appropriate copy ctor if element has initializer
+					// TODO: walk initializers and generate appropriate ctor if element has initializer.
+					// Initializer could be nested (depends on the depth of the array type on the object)
+
 					std::list< Expression * > args = makeInitList( objDecl->get_init() );
 					if ( args.empty() ) {
@@ -151,8 +153,8 @@
 						std::list< Statement * > dtor;
 
-						SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "?{}", back_inserter( ctor ) );
-						SymTab::makeArrayFunction( NULL, new VariableExpr( objDecl ), at, "^?{}", front_inserter( dtor ), false );
-
-						// Currently makeArrayFunction produces a single Statement - a CompoundStmt
+						SymTab::genImplicitCall( NULL, new VariableExpr( objDecl ), "?{}", back_inserter( ctor ), objDecl );
+						SymTab::genImplicitCall( NULL, new VariableExpr( objDecl ), "^?{}", front_inserter( dtor ), objDecl, false );
+
+						// Currently genArrayCall produces a single Statement - a CompoundStmt
 						// which  wraps everything that needs to happen. As such, it's technically
 						// possible to use a Statement ** in the above calls, but this is inherently
@@ -160,5 +162,5 @@
 						// immediately informed if somehow the above assumption is broken. In this case,
 						// we could always wrap the list of statements at this point with a CompoundStmt,
-						// but it seems reasonable at the moment for this to be done by makeArrayFunction
+						// but it seems reasonable at the moment for this to be done by genArrayCall
 						// itself
 						assert( ctor.size() == 1 && dynamic_cast< ImplicitCtorDtorStmt * >( ctor.front() ) );
@@ -170,7 +172,8 @@
 						// we haven't exceeded size. This requires precomputing the size because it might be a side-effecting
 						// computation.
-						// may have fewer initializers than eleemnts in the array - need to default construct
+						// may have fewer initializers than elements in the array - need to default construct
 						// remaining elements.
 						// might be able to merge this with the case above.
+
 					}
 				} else {
