Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision 4fbdfae0bcc812e14e8400b3c8e8fdba44da96c8)
+++ src/SymTab/Autogen.cc	(revision bff227f73387fd7ed67a8a31545259b27d4ddc24)
@@ -21,4 +21,5 @@
 #include "SynTree/TypeSubstitution.h"
 #include "Common/utility.h"
+#include "CodeGen/OperatorTable.h"
 #include "AddVisit.h"
 #include "MakeLibCfa.h"
@@ -223,5 +224,5 @@
 			FunctionType * ftype = data.genType( refType );
 
-			if(concurrent_type && InitTweak::isDestructor( data.fname )) {
+			if(concurrent_type && CodeGen::isDestructor( data.fname )) {
 				ftype->get_parameters().front()->get_type()->set_mutex( true );
 			}
@@ -407,5 +408,5 @@
 
 		// field ctors are only generated if default constructor and copy constructor are both generated
-		unsigned numCtors = std::count_if( newFuncs.begin(), newFuncs.end(), [](FunctionDecl * dcl) { return InitTweak::isConstructor( dcl->get_name() ); } );
+		unsigned numCtors = std::count_if( newFuncs.begin(), newFuncs.end(), [](FunctionDecl * dcl) { return CodeGen::isConstructor( dcl->get_name() ); } );
 
 		if ( functionNesting == 0 ) {
@@ -422,10 +423,10 @@
 			// generate appropriate calls to member ctor, assignment
 			// destructor needs to do everything in reverse, so pass "forward" based on whether the function is a destructor
-			if ( ! InitTweak::isDestructor( dcl->get_name() ) ) {
+			if ( ! CodeGen::isDestructor( dcl->get_name() ) ) {
 				makeStructFunctionBody( aggregateDecl->get_members().begin(), aggregateDecl->get_members().end(), dcl, isDynamicLayout );
 			} else {
 				makeStructFunctionBody( aggregateDecl->get_members().rbegin(), aggregateDecl->get_members().rend(), dcl, isDynamicLayout, false );
 			}
-			if ( InitTweak::isAssignment( dcl->get_name() ) ) {
+			if ( CodeGen::isAssignment( dcl->get_name() ) ) {
 				// assignment needs to return a value
 				FunctionType * assignType = dcl->get_functionType();
@@ -486,5 +487,5 @@
 
 		makeUnionFieldsAssignment( srcParam, dstParam, back_inserter( funcDecl->get_statements()->get_kids() ) );
-		if ( InitTweak::isAssignment( funcDecl->get_name() ) ) {
+		if ( CodeGen::isAssignment( funcDecl->get_name() ) ) {
 			// also generate return statement in assignment
 			funcDecl->get_statements()->get_kids().push_back( new ReturnStmt( noLabels, new VariableExpr( srcParam ) ) );
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 4fbdfae0bcc812e14e8400b3c8e8fdba44da96c8)
+++ src/SymTab/Indexer.cc	(revision bff227f73387fd7ed67a8a31545259b27d4ddc24)
@@ -26,4 +26,6 @@
 
 #include "Common/utility.h"
+
+#include "CodeGen/OperatorTable.h"
 
 #include "ResolvExpr/typeops.h"
@@ -112,5 +114,5 @@
 	void Indexer::removeSpecialOverrides( const std::string &id, std::list< DeclarationWithType * > & out ) const {
 		// only need to perform this step for constructors, destructors, and assignment functions
-		if ( ! InitTweak::isCtorDtorAssign( id ) ) return;
+		if ( ! CodeGen::isCtorDtorAssign( id ) ) return;
 
 		// helpful data structure
@@ -140,5 +142,5 @@
 				decls.push_back( DeclBall{ function, isUserDefinedFunc, isDefaultCtor, isDtor, isCopyFunc } );
 				existsUserDefinedFunc = existsUserDefinedFunc || isUserDefinedFunc;
-				existsUserDefinedCtor = existsUserDefinedCtor || (isUserDefinedFunc && InitTweak::isConstructor( function->get_name() ) );
+				existsUserDefinedCtor = existsUserDefinedCtor || (isUserDefinedFunc && CodeGen::isConstructor( function->get_name() ) );
 				existsUserDefinedDtor = existsUserDefinedDtor || (isUserDefinedFunc && isDtor);
 				existsUserDefinedCopyFunc = existsUserDefinedCopyFunc || (isUserDefinedFunc && isCopyFunc);
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 4fbdfae0bcc812e14e8400b3c8e8fdba44da96c8)
+++ src/SymTab/Validate.cc	(revision bff227f73387fd7ed67a8a31545259b27d4ddc24)
@@ -43,4 +43,5 @@
 
 #include "CodeGen/CodeGenerator.h"
+#include "CodeGen/OperatorTable.h"
 
 #include "Common/PassVisitor.h"
@@ -52,6 +53,4 @@
 
 #include "GenPoly/DeclMutator.h"
-
-#include "InitTweak/InitTweak.h"
 
 #include "AddVisit.h"
@@ -827,5 +826,5 @@
 		std::list< DeclarationWithType * > &params = funcType->get_parameters();
 
-		if ( InitTweak::isCtorDtorAssign( funcDecl->get_name() ) ) {
+		if ( CodeGen::isCtorDtorAssign( funcDecl->get_name() ) ) { // TODO: also check /=, etc.
 			if ( params.size() == 0 ) {
 				throw SemanticError( "Constructors, destructors, and assignment functions require at least one parameter ", funcDecl );
@@ -835,5 +834,5 @@
 				throw SemanticError( "First parameter of a constructor, destructor, or assignment function must be a reference ", funcDecl );
 			}
-			if ( InitTweak::isCtorDtor( funcDecl->get_name() ) && returnVals.size() != 0 ) {
+			if ( CodeGen::isCtorDtor( funcDecl->get_name() ) && returnVals.size() != 0 ) {
 				throw SemanticError( "Constructors and destructors cannot have explicit return values ", funcDecl );
 			}
