diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index 35b5e38e521d5cd273f7d03a78895107ece113dc..5ed4aba26d7029b0c4c6d193c90ff1ae11ef3061 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -700,12 +700,6 @@ NumConstNode::containsPacExpectation(const string &pac_model_name) const
   return false;
 }
 
-bool
-NumConstNode::containsEndogenous() const
-{
-  return false;
-}
-
 bool
 NumConstNode::containsExogenous() const
 {
@@ -1875,18 +1869,6 @@ VariableNode::containsPacExpectation(const string &pac_model_name) const
   return false;
 }
 
-bool
-VariableNode::containsEndogenous() const
-{
-  if (get_type() == SymbolType::modelLocalVariable)
-    return datatree.getLocalVariable(symb_id)->containsEndogenous();
-
-  if (get_type() == SymbolType::endogenous)
-    return true;
-  else
-    return false;
-}
-
 bool
 VariableNode::containsExogenous() const
 {
@@ -3745,12 +3727,6 @@ UnaryOpNode::containsPacExpectation(const string &pac_model_name) const
   return arg->containsPacExpectation(pac_model_name);
 }
 
-bool
-UnaryOpNode::containsEndogenous() const
-{
-  return arg->containsEndogenous();
-}
-
 bool
 UnaryOpNode::containsExogenous() const
 {
@@ -5219,12 +5195,6 @@ BinaryOpNode::containsPacExpectation(const string &pac_model_name) const
   return arg1->containsPacExpectation(pac_model_name) || arg2->containsPacExpectation(pac_model_name);
 }
 
-bool
-BinaryOpNode::containsEndogenous() const
-{
-  return arg1->containsEndogenous() || arg2->containsEndogenous();
-}
-
 bool
 BinaryOpNode::containsExogenous() const
 {
@@ -6458,12 +6428,6 @@ TrinaryOpNode::containsPacExpectation(const string &pac_model_name) const
   return (arg1->containsPacExpectation(pac_model_name) || arg2->containsPacExpectation(pac_model_name) || arg3->containsPacExpectation(pac_model_name));
 }
 
-bool
-TrinaryOpNode::containsEndogenous() const
-{
-  return (arg1->containsEndogenous() || arg2->containsEndogenous() || arg3->containsEndogenous());
-}
-
 bool
 TrinaryOpNode::containsExogenous() const
 {
@@ -6962,15 +6926,6 @@ AbstractExternalFunctionNode::containsPacExpectation(const string &pac_model_nam
   return false;
 }
 
-bool
-AbstractExternalFunctionNode::containsEndogenous() const
-{
-  for (auto argument : arguments)
-    if (argument->containsEndogenous())
-      return true;
-  return false;
-}
-
 bool
 AbstractExternalFunctionNode::containsExogenous() const
 {
@@ -8444,13 +8399,6 @@ VarExpectationNode::containsPacExpectation(const string &pac_model_name) const
   return false;
 }
 
-bool
-VarExpectationNode::containsEndogenous() const
-{
-  cerr << "VarExpectationNode::containsEndogenous not implemented." << endl;
-  exit(EXIT_FAILURE);
-}
-
 bool
 VarExpectationNode::containsExogenous() const
 {
@@ -8840,12 +8788,6 @@ PacExpectationNode::containsPacExpectation(const string &pac_model_name) const
     return pac_model_name == model_name;
 }
 
-bool
-PacExpectationNode::containsEndogenous() const
-{
-  return true;
-}
-
 bool
 PacExpectationNode::containsExogenous() const
 {
diff --git a/src/ExprNode.hh b/src/ExprNode.hh
index 03b94bae5d91d23fa2c3dd6dae58869f471690fc..8d88d19daff12c20e5d3d8c3d05fb71ee453a32b 100644
--- a/src/ExprNode.hh
+++ b/src/ExprNode.hh
@@ -575,9 +575,6 @@ public:
   */
   virtual bool isNumConstNodeEqualTo(double value) const = 0;
 
-  //! Returns true if the expression contains one or several endogenous variable
-  virtual bool containsEndogenous() const = 0;
-
   //! Returns true if the expression contains one or several exogenous variable
   virtual bool containsExogenous() const = 0;
 
@@ -790,7 +787,6 @@ public:
   expr_t decreaseLeadsLagsPredeterminedVariables() const override;
   expr_t differentiateForwardVars(const vector<string> &subset, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
   bool isNumConstNodeEqualTo(double value) const override;
-  bool containsEndogenous() const override;
   bool containsExogenous() const override;
   int countDiffs() const override;
   bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override;
@@ -865,7 +861,6 @@ public:
   expr_t decreaseLeadsLagsPredeterminedVariables() const override;
   expr_t differentiateForwardVars(const vector<string> &subset, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
   bool isNumConstNodeEqualTo(double value) const override;
-  bool containsEndogenous() const override;
   bool containsExogenous() const override;
   int countDiffs() const override;
   bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override;
@@ -971,7 +966,6 @@ public:
   expr_t decreaseLeadsLagsPredeterminedVariables() const override;
   expr_t differentiateForwardVars(const vector<string> &subset, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
   bool isNumConstNodeEqualTo(double value) const override;
-  bool containsEndogenous() const override;
   bool containsExogenous() const override;
   int countDiffs() const override;
   bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override;
@@ -1081,7 +1075,6 @@ public:
   expr_t decreaseLeadsLagsPredeterminedVariables() const override;
   expr_t differentiateForwardVars(const vector<string> &subset, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
   bool isNumConstNodeEqualTo(double value) const override;
-  bool containsEndogenous() const override;
   bool containsExogenous() const override;
   int countDiffs() const override;
   bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override;
@@ -1213,7 +1206,6 @@ public:
   expr_t decreaseLeadsLagsPredeterminedVariables() const override;
   expr_t differentiateForwardVars(const vector<string> &subset, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
   bool isNumConstNodeEqualTo(double value) const override;
-  bool containsEndogenous() const override;
   bool containsExogenous() const override;
   int countDiffs() const override;
   bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override;
@@ -1326,7 +1318,6 @@ public:
   expr_t decreaseLeadsLagsPredeterminedVariables() const override;
   expr_t differentiateForwardVars(const vector<string> &subset, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
   bool isNumConstNodeEqualTo(double value) const override;
-  bool containsEndogenous() const override;
   bool containsExogenous() const override;
   int countDiffs() const override;
   bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override;
@@ -1509,7 +1500,6 @@ public:
                const deriv_node_temp_terms_t &tef_terms) const override;
   void collectVARLHSVariable(set<expr_t> &result) const override;
   void collectDynamicVariables(SymbolType type_arg, set<pair<int, int>> &result) const override;
-  bool containsEndogenous() const override;
   bool containsExogenous() const override;
   int countDiffs() const override;
   bool isNumConstNodeEqualTo(double value) const override;
@@ -1584,7 +1574,6 @@ public:
                const deriv_node_temp_terms_t &tef_terms) const override;
   void collectVARLHSVariable(set<expr_t> &result) const override;
   void collectDynamicVariables(SymbolType type_arg, set<pair<int, int>> &result) const override;
-  bool containsEndogenous() const override;
   bool containsExogenous() const override;
   int countDiffs() const override;
   bool isNumConstNodeEqualTo(double value) const override;