Index: src/SynTree/ApplicationExpr.cc
===================================================================
--- src/SynTree/ApplicationExpr.cc	(revision 99b7d4fc43164137d0f4b6e738bf7382f6f87432)
+++ src/SynTree/ApplicationExpr.cc	(revision df626ebafe6de5b4ec1e48c73cde07ba2d8dd86a)
@@ -59,5 +59,5 @@
 
 ApplicationExpr::ApplicationExpr( const ApplicationExpr &other ) :
-		Expression( other ), function( maybeClone( other.function ) ), inferParams( other.inferParams ) {
+		Expression( other ), function( maybeClone( other.function ) ) {
 	cloneAll( other.args, args );
 }
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 99b7d4fc43164137d0f4b6e738bf7382f6f87432)
+++ src/SynTree/Expression.cc	(revision df626ebafe6de5b4ec1e48c73cde07ba2d8dd86a)
@@ -35,5 +35,5 @@
 Expression::Expression() : result( 0 ), env( 0 ) {}
 
-Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ) {
+Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ), inferParams( other.inferParams ) {
 }
 
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision 99b7d4fc43164137d0f4b6e738bf7382f6f87432)
+++ src/SynTree/Expression.h	(revision df626ebafe6de5b4ec1e48c73cde07ba2d8dd86a)
@@ -31,30 +31,4 @@
 
 
-/// Expression is the root type for all expressions
-class Expression : public BaseSyntaxNode{
-  public:
-	Type * result;
-	TypeSubstitution * env;
-	bool extension = false;
-
-	Expression();
-	Expression( const Expression & other );
-	virtual ~Expression();
-
-	Type *& get_result() { return result; }
-	const Type * get_result() const { return result; }
-	void set_result( Type * newValue ) { result = newValue; }
-
-	TypeSubstitution * get_env() const { return env; }
-	void set_env( TypeSubstitution * newValue ) { env = newValue; }
-	bool get_extension() const { return extension; }
-	Expression * set_extension( bool exten ) { extension = exten; return this; }
-
-	virtual Expression * clone() const override = 0;
-	virtual void accept( Visitor & v ) override = 0;
-	virtual Expression * acceptMutator( Mutator & m ) override = 0;
-	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
-};
-
 struct ParamEntry;
 
@@ -73,6 +47,35 @@
 	Type * actualType;
 	Type * formalType;
-	Expression* expr;
+	Expression * expr;
 	std::unique_ptr< InferredParams > inferParams;
+};
+
+/// Expression is the root type for all expressions
+class Expression : public BaseSyntaxNode {
+  public:
+	Type * result;
+	TypeSubstitution * env;
+	bool extension = false;
+	InferredParams inferParams;
+
+	Expression();
+	Expression( const Expression & other );
+	virtual ~Expression();
+
+	Type *& get_result() { return result; }
+	const Type * get_result() const { return result; }
+	void set_result( Type * newValue ) { result = newValue; }
+
+	TypeSubstitution * get_env() const { return env; }
+	void set_env( TypeSubstitution * newValue ) { env = newValue; }
+	bool get_extension() const { return extension; }
+	Expression * set_extension( bool exten ) { extension = exten; return this; }
+
+	InferredParams & get_inferParams() { return inferParams; }
+
+	virtual Expression * clone() const override = 0;
+	virtual void accept( Visitor & v ) override = 0;
+	virtual Expression * acceptMutator( Mutator & m ) override = 0;
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 };
 
@@ -83,5 +86,4 @@
 	Expression * function;
 	std::list<Expression *> args;
-	InferredParams inferParams;
 
 	ApplicationExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >() );
@@ -92,5 +94,4 @@
 	void set_function( Expression * newValue ) { function = newValue; }
 	std::list<Expression *>& get_args() { return args; }
-	InferredParams & get_inferParams() { return inferParams; }
 
 	virtual ApplicationExpr * clone() const { return new ApplicationExpr( * this ); }
