Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision d9f1b2df60273d9c673c37ac6cf70f4752991798)
+++ src/InitTweak/FixInit.cc	(revision 9554d9b8896c38886ce2b6bb9384a2f1927f81d6)
@@ -131,6 +131,8 @@
 				// optimization: don't need to copy construct in order to call intrinsic functions
 				return appExpr;
-			} else if ( FunctionDecl * funcDecl = dynamic_cast< FunctionDecl * > ( function->get_var() ) ) {
-				FunctionType * ftype = funcDecl->get_functionType();
+			} else if ( DeclarationWithType * funcDecl = dynamic_cast< DeclarationWithType * > ( function->get_var() ) ) {
+				// FunctionType * ftype = funcDecl->get_functionType();
+				FunctionType * ftype = dynamic_cast< FunctionType * >( GenPoly::getFunctionType( funcDecl->get_type() ) );
+				assert( ftype );
 				if ( (funcDecl->get_name() == "?{}" || funcDecl->get_name() == "?=?") && ftype->get_parameters().size() == 2 ) {
 					Type * t1 = ftype->get_parameters().front()->get_type();
@@ -138,4 +140,5 @@
 					PointerType * ptrType = dynamic_cast< PointerType * > ( t1 );
 					assert( ptrType );
+
 					if ( ResolvExpr::typesCompatible( ptrType->get_base(), t2, SymTab::Indexer() ) ) {
 						// optimization: don't need to copy construct in order to call a copy constructor or
Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision d9f1b2df60273d9c673c37ac6cf70f4752991798)
+++ src/SymTab/Autogen.cc	(revision 9554d9b8896c38886ce2b6bb9384a2f1927f81d6)
@@ -10,5 +10,5 @@
 // Created On       : Thu Mar 03 15:45:56 2016
 // Last Modified By : Rob Schluntz
-// Last Modified On : Wed May 11 13:22:03 2016
+// Last Modified On : Thu May 26 14:14:09 2016
 // Update Count     : 1
 //
@@ -163,4 +163,29 @@
 	/// Creates a new type decl that's the same as src, but renamed and with only the ?=?, ?{} (default and copy), and ^?{} assertions (for complete types only)
 	TypeDecl *cloneAndRename( TypeDecl *src, const std::string &name ) {
+		// TypeDecl *dst = new TypeDecl( name, src->get_storageClass(), 0, src->get_kind() );
+
+		// if ( src->get_kind() == TypeDecl::Any ) {
+		// 	TypeInstType *opParamType = new TypeInstType( Type::Qualifiers(), name, dst );
+		// 	FunctionType *opFunctionType = new FunctionType( Type::Qualifiers(), false );
+		// 	opFunctionType->get_parameters().push_back(
+		// 		new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), opParamType->clone() ), 0 ) );
+		// 	FunctionDecl *ctorAssert = new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, opFunctionType->clone(), 0, false, false );
+		// 	FunctionDecl *dtorAssert = new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, opFunctionType->clone(), 0, false, false );
+
+		// 	opFunctionType->get_parameters().push_back(
+		// 		new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, opParamType, 0 ) );
+		// 	FunctionDecl *copyCtorAssert = new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, opFunctionType->clone(), 0, false, false );
+
+		// 	opFunctionType->get_returnVals().push_back(
+		// 		new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, opParamType->clone(), 0 ) );
+		// 	FunctionDecl *assignAssert = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, opFunctionType, 0, false, false );
+
+
+		// 	dst->get_assertions().push_back( assignAssert );
+		// 	dst->get_assertions().push_back( ctorAssert );
+		// 	dst->get_assertions().push_back( dtorAssert );
+		// 	dst->get_assertions().push_back( copyCtorAssert );
+		// }
+
 		TypeDecl *dst = new TypeDecl( src->get_name(), src->get_storageClass(), 0, src->get_kind() );
 		cloneAll(src->get_assertions(), dst->get_assertions());
Index: src/SynTree/ApplicationExpr.cc
===================================================================
--- src/SynTree/ApplicationExpr.cc	(revision d9f1b2df60273d9c673c37ac6cf70f4752991798)
+++ src/SynTree/ApplicationExpr.cc	(revision 9554d9b8896c38886ce2b6bb9384a2f1927f81d6)
@@ -64,5 +64,5 @@
 
 void ApplicationExpr::print( std::ostream &os, int indent ) const {
-	os << "Application of" << std::endl << std::string(indent, ' ');
+	os << "Application of" << std::endl << std::string(indent+2, ' ');
 	function->print( os, indent+2 );
 	if ( ! args.empty() ) {
