Index: src/AST/SymbolTable.cpp
===================================================================
--- src/AST/SymbolTable.cpp	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/AST/SymbolTable.cpp	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -22,5 +22,5 @@
 #include "Inspect.hpp"
 #include "Type.hpp"
-#include "CodeGen/OperatorTable.h"  // for isCtorDtorAssign
+#include "CodeGen/OperatorTable.h"         // for isCtorDtorAssign
 #include "Common/SemanticError.h"
 #include "Common/Stats/Counter.h"
@@ -28,5 +28,5 @@
 #include "InitTweak/InitTweak.h"
 #include "ResolvExpr/Cost.h"
-#include "ResolvExpr/typeops.h"     // for referenceToRvalueConversion
+#include "ResolvExpr/CandidateFinder.hpp"  // for referenceToRvalueConversion
 #include "ResolvExpr/Unify.h"
 #include "SymTab/Mangler.h"
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -14,4 +14,6 @@
 //
 
+#include "AlternativeFinder.h"
+
 #include <algorithm>               // for copy
 #include <cassert>                 // for strict_dynamic_cast, assert, assertf
@@ -27,5 +29,4 @@
 #include "CompilationState.h"      // for resolvep
 #include "Alternative.h"           // for AltList, Alternative
-#include "AlternativeFinder.h"
 #include "AST/Expr.hpp"
 #include "AST/SymbolTable.hpp"
@@ -33,4 +34,5 @@
 #include "Common/SemanticError.h"  // for SemanticError
 #include "Common/utility.h"        // for deleteAll, printAll, CodeLocation
+#include "ConversionCost.h"        // for conversionCost
 #include "Cost.h"                  // for Cost, Cost::zero, operator<<, Cost...
 #include "ExplodedActual.h"        // for ExplodedActual
Index: src/ResolvExpr/AlternativeFinder.h
===================================================================
--- src/ResolvExpr/AlternativeFinder.h	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/ResolvExpr/AlternativeFinder.h	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -34,4 +34,9 @@
 namespace ResolvExpr {
 	struct ArgPack;
+
+	Cost computeConversionCost( Type * actualType, Type * formalType, bool actualIsLvalue,
+		const SymTab::Indexer & indexer, const TypeEnvironment & env );
+
+	void referenceToRvalueConversion( Expression *& expr, Cost & cost );
 
 	/// First index is which argument, second index is which alternative for that argument,
Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -25,4 +25,5 @@
 #include "Candidate.hpp"
 #include "CompilationState.h"
+#include "ConversionCost.h"       // for conversionCast
 #include "Cost.h"
 #include "ExplodedArg.hpp"
@@ -31,5 +32,5 @@
 #include "ResolveTypeof.h"
 #include "SatisfyAssertions.hpp"
-#include "typeops.h"              // for adjustExprType, conversionCost, polyCost, specCost
+#include "typeops.h"              // for adjustExprType, polyCost, specCost
 #include "Unify.h"
 #include "AST/Expr.hpp"
Index: src/ResolvExpr/CandidateFinder.hpp
===================================================================
--- src/ResolvExpr/CandidateFinder.hpp	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/ResolvExpr/CandidateFinder.hpp	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -63,4 +63,9 @@
 	const ast::SymbolTable & symtab, const ast::TypeEnvironment & env );
 
+/// Create an expression that preforms reference to rvalue conversion on
+/// the given expression and update the cost of the expression.
+const ast::Expr * referenceToRvalueConversion(
+	const ast::Expr * expr, Cost & cost );
+
 } // namespace ResolvExpr
 
Index: src/ResolvExpr/ConversionCost.h
===================================================================
--- src/ResolvExpr/ConversionCost.h	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/ResolvExpr/ConversionCost.h	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -32,4 +32,8 @@
 namespace ResolvExpr {
 	class TypeEnvironment;
+
+	Cost conversionCost(
+		const Type * src, const Type * dest, bool srcIsLvalue,
+		const SymTab::Indexer & indexer, const TypeEnvironment & env );
 
 	typedef std::function<Cost(const Type *, const Type *, bool,
@@ -80,4 +84,12 @@
 	const ast::SymbolTable &, const ast::TypeEnvironment &)>;
 
+Cost conversionCost(
+	const ast::Type * src, const ast::Type * dst, bool srcIsLvalue,
+	const ast::SymbolTable & symtab, const ast::TypeEnvironment & env );
+
+Cost convertToReferenceCost( const ast::Type * src, const ast::ReferenceType * dest,
+	bool srcIsLvalue, const ast::SymbolTable & indexer, const ast::TypeEnvironment & env,
+	PtrsCalculation func );
+
 #warning when the old ConversionCost is removed, get ride of the _new suffix.
 class ConversionCost_new : public ast::WithShortCircuiting {
@@ -119,8 +131,4 @@
 };
 
-Cost convertToReferenceCost( const ast::Type * src, const ast::ReferenceType * dest,
-	bool srcIsLvalue, const ast::SymbolTable & indexer, const ast::TypeEnvironment & env,
-	PtrsCalculation func );
-
 } // namespace ResolvExpr
 
Index: src/ResolvExpr/ResolveAssertions.cc
===================================================================
--- src/ResolvExpr/ResolveAssertions.cc	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/ResolvExpr/ResolveAssertions.cc	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -31,4 +31,5 @@
 #include "Common/utility.h"         // for sort_mins
 #include "GenPoly/GenPoly.h"        // for getFunctionType
+#include "ResolvExpr/AlternativeFinder.h"  // for computeConversionCost
 #include "ResolvExpr/RenameVars.h"  // for renameTyVars
 #include "SymTab/Indexer.h"         // for Indexer
Index: src/ResolvExpr/typeops.h
===================================================================
--- src/ResolvExpr/typeops.h	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/ResolvExpr/typeops.h	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -86,15 +86,4 @@
 		const ast::SymbolTable & symtab, const ast::TypeEnvironment & env );
 
-	// in ConversionCost.cc
-	Cost conversionCost( const Type * src, const Type * dest, bool srcIsLvalue,
-		const SymTab::Indexer & indexer, const TypeEnvironment & env );
-	Cost conversionCost(
-		const ast::Type * src, const ast::Type * dst, bool srcIsLvalue,
-		const ast::SymbolTable & symtab, const ast::TypeEnvironment & env );
-
-	// in AlternativeFinder.cc
-	Cost computeConversionCost( Type * actualType, Type * formalType, bool actualIsLvalue,
-		const SymTab::Indexer & indexer, const TypeEnvironment & env );
-
 	// in PtrsAssignable.cc
 	int ptrsAssignable( const Type * src, const Type * dest, const TypeEnvironment & env );
@@ -137,9 +126,4 @@
 		return false;
 	}
-
-	// in AlternativeFinder.cc
-	void referenceToRvalueConversion( Expression *& expr, Cost & cost );
-	// in CandidateFinder.cpp
-	const ast::Expr * referenceToRvalueConversion( const ast::Expr * expr, Cost & cost );
 
 	/// flatten tuple type into list of types
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 7b5694da33510256b93c764421e1bea0be79d671)
+++ src/SymTab/Indexer.cc	(revision fed6a0f4a3bfa4953d7550f86f6305db8f0125c7)
@@ -31,5 +31,5 @@
 #include "InitTweak/InitTweak.h"   // for isConstructor, isCopyFunction, isC...
 #include "Mangler.h"               // for Mangler
-#include "ResolvExpr/typeops.h"    // for referenceToRvalueConversion
+#include "ResolvExpr/AlternativeFinder.h"  // for referenceToRvalueConversion
 #include "ResolvExpr/Unify.h"      // for typesCompatible
 #include "SynTree/LinkageSpec.h"   // for isMangled, isOverridable, Spec
