diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc
index b6314ab94f83c8fd135b29c138e84391679e8056..f3eade18e9d8cb0cd719a63ef433d7a48ae0f42e 100644
--- a/src/ComputingTasks.cc
+++ b/src/ComputingTasks.cc
@@ -966,7 +966,6 @@ RamseyConstraintsStatement::writeOutput(ostream &output, const string &basename,
 void
 RamseyConstraintsStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"ramsey_constraints\""
          << ", \"ramsey_model_constraints\": [" << endl;
   for (RamseyConstraintsStatement::constraints_t::const_iterator it = constraints.begin(); it != constraints.end(); ++it)
@@ -993,7 +992,7 @@ RamseyConstraintsStatement::writeJsonOutput(ostream &output) const
           exit(1);
         }
       output << " ";
-      it->expression->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->expression->writeJsonOutput(output, {}, {});
       output << "\"}" << endl;
     }
   output << "]" << endl;
@@ -1570,7 +1569,6 @@ EstimatedParamsStatement::writeOutput(ostream &output, const string &basename, b
 void
 EstimatedParamsStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"estimated_params\", "
          << "\"params\": [";
   for (vector<EstimationParams>::const_iterator it = estim_params_list.begin(); it != estim_params_list.end(); it++)
@@ -1593,23 +1591,23 @@ EstimatedParamsStatement::writeJsonOutput(ostream &output) const
         }
 
       output << ", \"init_val\": \"";
-      it->init_val->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->init_val->writeJsonOutput(output, {}, {});
       output << "\", \"lower_bound\": \"";
-      it->low_bound->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->low_bound->writeJsonOutput(output, {}, {});
       output << "\", \"upper_bound\": \"";
-      it->up_bound->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->up_bound->writeJsonOutput(output, {}, {});
       output << "\", \"prior_distribution\": "
              << it->prior
              << ", \"mean\": \"";
-      it->mean->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->mean->writeJsonOutput(output, {}, {});
       output << "\", \"std\": \"";
-      it->std->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->std->writeJsonOutput(output, {}, {});
       output << "\", \"p3\": \"";
-      it->p3->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->p3->writeJsonOutput(output, {}, {});
       output << "\", \"p4\": \"";
-      it->p4->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->p4->writeJsonOutput(output, {}, {});
       output << "\", \"jscale\": \"";
-      it->jscale->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->jscale->writeJsonOutput(output, {}, {});
       output << "\"}" << endl;
     }
   output << "]"
@@ -1692,7 +1690,6 @@ EstimatedParamsInitStatement::writeOutput(ostream &output, const string &basenam
 void
 EstimatedParamsInitStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"estimated_params_init\"";
 
   if (use_calibration)
@@ -1718,7 +1715,7 @@ EstimatedParamsInitStatement::writeJsonOutput(ostream &output) const
           break;
         }
       output << ", \"init_val\": \"";
-      it->init_val->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->init_val->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
   output << "]"
@@ -1814,7 +1811,6 @@ EstimatedParamsBoundsStatement::writeOutput(ostream &output, const string &basen
 void
 EstimatedParamsBoundsStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"estimated_params_bounds\", "
          << "\"params\": [";
 
@@ -1836,9 +1832,9 @@ EstimatedParamsBoundsStatement::writeJsonOutput(ostream &output) const
           break;
         }
       output << ", \"lower_bound\": ";
-      it->low_bound->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->low_bound->writeJsonOutput(output, {}, {});
       output << ", \"upper_bound\": ";
-      it->up_bound->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->up_bound->writeJsonOutput(output, {}, {});
       output << "}";
     }
   output << "]"
@@ -1874,7 +1870,6 @@ ObservationTrendsStatement::writeOutput(ostream &output, const string &basename,
 void
 ObservationTrendsStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"observation_trends\", "
          << "\"trends\" : {";
   bool printed = false;
@@ -1886,7 +1881,7 @@ ObservationTrendsStatement::writeJsonOutput(ostream &output) const
           if (printed)
             output << ", ";
           output << "\"" << it->first << "\": \"";
-          it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+          it->second->writeJsonOutput(output, {}, {});
           output << "\"" << endl;
           printed = true;
         }
@@ -1977,7 +1972,6 @@ OsrParamsBoundsStatement::writeOutput(ostream &output, const string &basename, b
 void
 OsrParamsBoundsStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"osr_params_bounds\""
          << ", \"bounds\": [";
   for (vector<OsrParams>::const_iterator it = osr_params_list.begin();
@@ -1987,9 +1981,9 @@ OsrParamsBoundsStatement::writeJsonOutput(ostream &output) const
         output << ", ";
       output << "{\"parameter\": \"" << it->name << "\","
              << "\"bounds\": [\"";
-      it->low_bound->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->low_bound->writeJsonOutput(output, {}, {});
       output << "\", \"";
-      it->up_bound->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->up_bound->writeJsonOutput(output, {}, {});
       output << "\"]"
              << "}";
     }
@@ -2105,7 +2099,6 @@ OptimWeightsStatement::writeOutput(ostream &output, const string &basename, bool
 void
 OptimWeightsStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"optim_weights\", "
          << "\"weights\": [";
   for (var_weights_t::const_iterator it = var_weights.begin();
@@ -2115,7 +2108,7 @@ OptimWeightsStatement::writeJsonOutput(ostream &output) const
         output << ", ";
       output << "{\"name\": \"" << it->first << "\""
              << ", \"value\": \"";
-      it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
 
@@ -2127,7 +2120,7 @@ OptimWeightsStatement::writeJsonOutput(ostream &output) const
       output << "{\"name1\": \"" << it->first.first << "\""
              << ", \"name2\": \"" << it->first.second << "\""
              << ", \"value\": \"";
-      it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
   output << "]"
@@ -3998,9 +3991,8 @@ BasicPriorStatement::writeJsonPriorOutput(ostream &output) const
   writeJsonShape(output);
   if (variance != NULL)
     {
-      deriv_node_temp_terms_t tef_terms;
       output << ", \"variance\": \"";
-      variance->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      variance->writeJsonOutput(output, {}, {});
       output << "\"";
     }
   if (options_list.getNumberOfOptions())
diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 5bb97344db584bb0920c41065f2ae4ca347da548..1bbf892d96acd9bfb726bce2e6d6cc06ab772bec 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -5895,9 +5895,6 @@ DynamicModel::writeResidualsC(const string &basename, bool cuda) const
   mDynamicModelFile << "void Residuals(const double *y, double *x, int nb_row_x, double *params, double *steady_state, int it_, double *residual)" << endl
                     << "{" << endl;
 
-  // this is always empty here, but needed by d1->writeOutput
-  deriv_node_temp_terms_t tef_terms;
-
   ostringstream model_output;    // Used for storing model equations
   writeModelEquations(model_output, oCDynamic2Model);
 
@@ -5950,9 +5947,6 @@ DynamicModel::writeFirstDerivativesC(const string &basename, bool cuda) const
   mDynamicModelFile << "void FirstDerivatives(const double *y, double *x, int nb_row_x, double *params, double *steady_state, int it_, double *residual, double *g1, double *v2, double *v3)" << endl
                     << "{" << endl;
 
-  // this is always empty here, but needed by d1->writeOutput
-  deriv_node_temp_terms_t tef_terms;
-
   // Writing Jacobian
   for (first_derivatives_t::const_iterator it = first_derivatives.begin();
        it != first_derivatives.end(); it++)
@@ -5965,7 +5959,7 @@ DynamicModel::writeFirstDerivativesC(const string &basename, bool cuda) const
       mDynamicModelFile << "=";
       // oCStaticModel makes reference to the static variables
       // oCDynamicModel makes reference to the dynamic variables
-      d1->writeOutput(mDynamicModelFile, oCDynamicModel, temporary_terms, {}, tef_terms);
+      d1->writeOutput(mDynamicModelFile, oCDynamicModel, temporary_terms, {}, {});
       mDynamicModelFile << ";" << endl;
     }
 
@@ -6014,8 +6008,6 @@ DynamicModel::writeFirstDerivativesC_csr(const string &basename, bool cuda) cons
                     << "{" << endl;
 
   int cols_nbr = 3*symbol_table.endo_nbr() + symbol_table.exo_nbr() + symbol_table.exo_det_nbr();
-  // this is always empty here, but needed by d1->writeOutput
-  deriv_node_temp_terms_t tef_terms;
 
   // Indexing derivatives in column order
   vector<derivative> D;
@@ -6060,7 +6052,7 @@ DynamicModel::writeFirstDerivativesC_csr(const string &basename, bool cuda) cons
                         << "=" << it->col_nbr << ";" << endl;
       mDynamicModelFile << "value[" << k << "] = ";
       // oCstaticModel makes reference to the static variables
-      it->value->writeOutput(mDynamicModelFile, oCDynamic2Model, temporary_terms, {}, tef_terms);
+      it->value->writeOutput(mDynamicModelFile, oCDynamic2Model, temporary_terms, {}, {});
       mDynamicModelFile << ";" << endl;
       k++;
     }
@@ -6119,9 +6111,6 @@ DynamicModel::writeSecondDerivativesC_csr(const string &basename, bool cuda) con
   mDynamicModelFile << "void SecondDerivatives(const double *y, double *x, int nb_row_x, double *params, double *steady_state, int it_, double *residual, int *row_ptr, int *col_ptr, double *value)" << endl
                     << "{" << endl;
 
-  // this is always empty here, but needed by d1->writeOutput
-  deriv_node_temp_terms_t tef_terms;
-
   // Indexing derivatives in column order
   vector<derivative> D;
   int hessianColsNbr = dynJacobianColsNbr*dynJacobianColsNbr;
@@ -6159,7 +6148,7 @@ DynamicModel::writeSecondDerivativesC_csr(const string &basename, bool cuda) con
                         << "=" << it->col_nbr << ";" << endl;
       mDynamicModelFile << "value[" << k << "] = ";
       // oCstaticModel makes reference to the static variables
-      it->value->writeOutput(mDynamicModelFile, oCStaticModel, temporary_terms, {}, tef_terms);
+      it->value->writeOutput(mDynamicModelFile, oCStaticModel, temporary_terms, {}, {});
       mDynamicModelFile << ";" << endl;
       k++;
     }
@@ -6218,9 +6207,6 @@ DynamicModel::writeThirdDerivativesC_csr(const string &basename, bool cuda) cons
   mDynamicModelFile << "void ThirdDerivatives(const double *y, double *x, int nb_row_x, double *params, double *steady_state, int it_, double *residual, double *g1, double *v2, double *v3)" << endl
                     << "{" << endl;
 
-  // this is always empty here, but needed by d1->writeOutput
-  deriv_node_temp_terms_t tef_terms;
-
   vector<derivative> D;
   int hessianColsNbr = dynJacobianColsNbr*dynJacobianColsNbr;
   int thirdDerivativesColsNbr = hessianColsNbr*dynJacobianColsNbr;
@@ -6291,7 +6277,7 @@ DynamicModel::writeThirdDerivativesC_csr(const string &basename, bool cuda) cons
                         << "=" << it->col_nbr << ";" << endl;
       mDynamicModelFile << "value[" << k << "] = ";
       // oCstaticModel makes reference to the static variables
-      it->value->writeOutput(mDynamicModelFile, oCStaticModel, temporary_terms, {}, tef_terms);
+      it->value->writeOutput(mDynamicModelFile, oCStaticModel, temporary_terms, {}, {});
       mDynamicModelFile << ";" << endl;
       k++;
     }
diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index 730297c95100277011e07ece88b36f46d8c59353..4f9ebdf7f401a3b965092553d7c8f34c3bfa13bb 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -197,8 +197,7 @@ ExprNode::writeOutput(ostream &output, ExprNodeOutputType output_type) const
 void
 ExprNode::writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs) const
 {
-  deriv_node_temp_terms_t tef_terms;
-  writeOutput(output, output_type, temporary_terms, temporary_terms_idxs, tef_terms);
+  writeOutput(output, output_type, temporary_terms, temporary_terms_idxs, {});
 }
 
 void
@@ -206,8 +205,7 @@ ExprNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                   bool lhs_rhs, const temporary_terms_t &temporary_terms,
                   const map_idx_t &map_idx, bool dynamic, bool steady_dynamic) const
 {
-  deriv_node_temp_terms_t tef_terms;
-  compile(CompileCode, instruction_number, lhs_rhs, temporary_terms, map_idx, dynamic, steady_dynamic, tef_terms);
+  compile(CompileCode, instruction_number, lhs_rhs, temporary_terms, map_idx, dynamic, steady_dynamic, {});
 }
 
 void
@@ -371,7 +369,7 @@ void
 NumConstNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                           const temporary_terms_t &temporary_terms,
                           const temporary_terms_idxs_t &temporary_terms_idxs,
-                          deriv_node_temp_terms_t &tef_terms) const
+                          const deriv_node_temp_terms_t &tef_terms) const
 {
   if (!checkIfTemporaryTermThenWrite(output, output_type, temporary_terms, temporary_terms_idxs))
     output << datatree.num_constants.get(id);
@@ -380,7 +378,7 @@ NumConstNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
 void
 NumConstNode::writeJsonOutput(ostream &output,
                               const temporary_terms_t &temporary_terms,
-                              deriv_node_temp_terms_t &tef_terms,
+                              const deriv_node_temp_terms_t &tef_terms,
                               const bool isdynamic) const
 {
   output << datatree.num_constants.get(id);
@@ -402,7 +400,7 @@ void
 NumConstNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                       bool lhs_rhs, const temporary_terms_t &temporary_terms,
                       const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                      deriv_node_temp_terms_t &tef_terms) const
+                      const deriv_node_temp_terms_t &tef_terms) const
 {
   FLDC_ fldc(datatree.num_constants.getDouble(id));
   fldc.write(CompileCode, instruction_number);
@@ -771,7 +769,7 @@ VariableNode::containsExternalFunction() const
 void
 VariableNode::writeJsonOutput(ostream &output,
                               const temporary_terms_t &temporary_terms,
-                              deriv_node_temp_terms_t &tef_terms,
+                              const deriv_node_temp_terms_t &tef_terms,
                               const bool isdynamic) const
 {
   temporary_terms_t::const_iterator it = temporary_terms.find(const_cast<VariableNode *>(this));
@@ -790,7 +788,7 @@ void
 VariableNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                           const temporary_terms_t &temporary_terms,
                           const temporary_terms_idxs_t &temporary_terms_idxs,
-                          deriv_node_temp_terms_t &tef_terms) const
+                          const deriv_node_temp_terms_t &tef_terms) const
 {
   if (checkIfTemporaryTermThenWrite(output, output_type, temporary_terms, temporary_terms_idxs))
     return;
@@ -1059,7 +1057,7 @@ void
 VariableNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                       bool lhs_rhs, const temporary_terms_t &temporary_terms,
                       const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                      deriv_node_temp_terms_t &tef_terms) const
+                      const deriv_node_temp_terms_t &tef_terms) const
 {
   if (type == eModelLocalVariable || type == eModFileLocalVariable)
     datatree.local_variables_table[symb_id]->compile(CompileCode, instruction_number, lhs_rhs, temporary_terms, map_idx, dynamic, steady_dynamic, tef_terms);
@@ -2189,7 +2187,7 @@ UnaryOpNode::containsExternalFunction() const
 void
 UnaryOpNode::writeJsonOutput(ostream &output,
                              const temporary_terms_t &temporary_terms,
-                             deriv_node_temp_terms_t &tef_terms,
+                             const deriv_node_temp_terms_t &tef_terms,
                               const bool isdynamic) const
 {
   temporary_terms_t::const_iterator it = temporary_terms.find(const_cast<UnaryOpNode *>(this));
@@ -2344,7 +2342,7 @@ void
 UnaryOpNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                          const temporary_terms_t &temporary_terms,
                          const temporary_terms_idxs_t &temporary_terms_idxs,
-                         deriv_node_temp_terms_t &tef_terms) const
+                         const deriv_node_temp_terms_t &tef_terms) const
 {
   if (checkIfTemporaryTermThenWrite(output, output_type, temporary_terms, temporary_terms_idxs))
     return;
@@ -2629,7 +2627,7 @@ void
 UnaryOpNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                      bool lhs_rhs, const temporary_terms_t &temporary_terms,
                      const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                     deriv_node_temp_terms_t &tef_terms) const
+                     const deriv_node_temp_terms_t &tef_terms) const
 {
   temporary_terms_t::const_iterator it = temporary_terms.find(const_cast<UnaryOpNode *>(this));
   if (it != temporary_terms.end())
@@ -3898,7 +3896,7 @@ void
 BinaryOpNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                       bool lhs_rhs, const temporary_terms_t &temporary_terms,
                       const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                      deriv_node_temp_terms_t &tef_terms) const
+                      const deriv_node_temp_terms_t &tef_terms) const
 {
   // If current node is a temporary term
   temporary_terms_t::const_iterator it = temporary_terms.find(const_cast<BinaryOpNode *>(this));
@@ -3952,7 +3950,7 @@ BinaryOpNode::containsExternalFunction() const
 void
 BinaryOpNode::writeJsonOutput(ostream &output,
                               const temporary_terms_t &temporary_terms,
-                              deriv_node_temp_terms_t &tef_terms,
+                              const deriv_node_temp_terms_t &tef_terms,
                               const bool isdynamic) const
 {
   // If current node is a temporary term
@@ -4085,7 +4083,7 @@ void
 BinaryOpNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                           const temporary_terms_t &temporary_terms,
                           const temporary_terms_idxs_t &temporary_terms_idxs,
-                          deriv_node_temp_terms_t &tef_terms) const
+                          const deriv_node_temp_terms_t &tef_terms) const
 {
   if (checkIfTemporaryTermThenWrite(output, output_type, temporary_terms, temporary_terms_idxs))
     return;
@@ -5345,7 +5343,7 @@ void
 TrinaryOpNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                        bool lhs_rhs, const temporary_terms_t &temporary_terms,
                        const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                       deriv_node_temp_terms_t &tef_terms) const
+                       const deriv_node_temp_terms_t &tef_terms) const
 {
   // If current node is a temporary term
   temporary_terms_t::const_iterator it = temporary_terms.find(const_cast<TrinaryOpNode *>(this));
@@ -5397,7 +5395,7 @@ TrinaryOpNode::containsExternalFunction() const
 void
 TrinaryOpNode::writeJsonOutput(ostream &output,
                                const temporary_terms_t &temporary_terms,
-                               deriv_node_temp_terms_t &tef_terms,
+                               const deriv_node_temp_terms_t &tef_terms,
                                const bool isdynamic) const
 {
   // If current node is a temporary term
@@ -5430,7 +5428,7 @@ void
 TrinaryOpNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                            const temporary_terms_t &temporary_terms,
                            const temporary_terms_idxs_t &temporary_terms_idxs,
-                           deriv_node_temp_terms_t &tef_terms) const
+                           const deriv_node_temp_terms_t &tef_terms) const
 {
   if (checkIfTemporaryTermThenWrite(output, output_type, temporary_terms, temporary_terms_idxs))
     return;
@@ -5968,7 +5966,7 @@ unsigned int
 AbstractExternalFunctionNode::compileExternalFunctionArguments(ostream &CompileCode, unsigned int &instruction_number,
                                                                bool lhs_rhs, const temporary_terms_t &temporary_terms,
                                                                const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                                                               deriv_node_temp_terms_t &tef_terms) const
+                                                               const deriv_node_temp_terms_t &tef_terms) const
 {
   for (vector<expr_t>::const_iterator it = arguments.begin();
        it != arguments.end(); it++)
@@ -6227,7 +6225,7 @@ AbstractExternalFunctionNode::differentiateForwardVars(const vector<string> &sub
 }
 
 bool
-AbstractExternalFunctionNode::alreadyWrittenAsTefTerm(int the_symb_id, deriv_node_temp_terms_t &tef_terms) const
+AbstractExternalFunctionNode::alreadyWrittenAsTefTerm(int the_symb_id, const deriv_node_temp_terms_t &tef_terms) const
 {
   deriv_node_temp_terms_t::const_iterator it = tef_terms.find(make_pair(the_symb_id, arguments));
   if (it != tef_terms.end())
@@ -6236,7 +6234,7 @@ AbstractExternalFunctionNode::alreadyWrittenAsTefTerm(int the_symb_id, deriv_nod
 }
 
 int
-AbstractExternalFunctionNode::getIndxInTefTerms(int the_symb_id, deriv_node_temp_terms_t &tef_terms) const throw (UnknownFunctionNameAndArgs)
+AbstractExternalFunctionNode::getIndxInTefTerms(int the_symb_id, const deriv_node_temp_terms_t &tef_terms) const throw (UnknownFunctionNameAndArgs)
 {
   deriv_node_temp_terms_t::const_iterator it = tef_terms.find(make_pair(the_symb_id, arguments));
   if (it != tef_terms.end())
@@ -6378,7 +6376,7 @@ void
 AbstractExternalFunctionNode::writeExternalFunctionArguments(ostream &output, ExprNodeOutputType output_type,
                                                              const temporary_terms_t &temporary_terms,
                                                              const temporary_terms_idxs_t &temporary_terms_idxs,
-                                                             deriv_node_temp_terms_t &tef_terms) const
+                                                             const deriv_node_temp_terms_t &tef_terms) const
 {
   for (vector<expr_t>::const_iterator it = arguments.begin();
        it != arguments.end(); it++)
@@ -6393,7 +6391,7 @@ AbstractExternalFunctionNode::writeExternalFunctionArguments(ostream &output, Ex
 void
 AbstractExternalFunctionNode::writeJsonExternalFunctionArguments(ostream &output,
                                                                  const temporary_terms_t &temporary_terms,
-                                                                 deriv_node_temp_terms_t &tef_terms,
+                                                                 const deriv_node_temp_terms_t &tef_terms,
                                                                  const bool isdynamic) const
 {
   for (vector<expr_t>::const_iterator it = arguments.begin();
@@ -6410,7 +6408,7 @@ void
 AbstractExternalFunctionNode::writePrhs(ostream &output, ExprNodeOutputType output_type,
                                         const temporary_terms_t &temporary_terms,
                                         const temporary_terms_idxs_t &temporary_terms_idxs,
-                                        deriv_node_temp_terms_t &tef_terms, const string &ending) const
+                                        const deriv_node_temp_terms_t &tef_terms, const string &ending) const
 {
   output << "mxArray *prhs"<< ending << "[nrhs"<< ending << "];" << endl;
   int i = 0;
@@ -6487,7 +6485,7 @@ void
 ExternalFunctionNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                               bool lhs_rhs, const temporary_terms_t &temporary_terms,
                               const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                              deriv_node_temp_terms_t &tef_terms) const
+                              const deriv_node_temp_terms_t &tef_terms) const
 {
   temporary_terms_t::const_iterator it = temporary_terms.find(const_cast<ExternalFunctionNode *>(this));
   if (it != temporary_terms.end())
@@ -6573,7 +6571,7 @@ ExternalFunctionNode::compileExternalFunctionOutput(ostream &CompileCode, unsign
 void
 ExternalFunctionNode::writeJsonOutput(ostream &output,
                                       const temporary_terms_t &temporary_terms,
-                                      deriv_node_temp_terms_t &tef_terms,
+                                      const deriv_node_temp_terms_t &tef_terms,
                                       const bool isdynamic) const
 {
   temporary_terms_t::const_iterator it = temporary_terms.find(const_cast<ExternalFunctionNode *>(this));
@@ -6592,7 +6590,7 @@ void
 ExternalFunctionNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                                   const temporary_terms_t &temporary_terms,
                                   const temporary_terms_idxs_t &temporary_terms_idxs,
-                                  deriv_node_temp_terms_t &tef_terms) const
+                                  const deriv_node_temp_terms_t &tef_terms) const
 {
   if (output_type == oMatlabOutsideModel || output_type == oSteadyStateFile
       || output_type == oCSteadyStateFile || output_type == oJuliaSteadyStateFile
@@ -6813,7 +6811,7 @@ FirstDerivExternalFunctionNode::composeDerivatives(const vector<expr_t> &dargs)
 void
 FirstDerivExternalFunctionNode::writeJsonOutput(ostream &output,
                                                 const temporary_terms_t &temporary_terms,
-                                                deriv_node_temp_terms_t &tef_terms,
+                                                const deriv_node_temp_terms_t &tef_terms,
                                                 const bool isdynamic) const
 {
   // If current node is a temporary term
@@ -6843,7 +6841,7 @@ void
 FirstDerivExternalFunctionNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                                             const temporary_terms_t &temporary_terms,
                                             const temporary_terms_idxs_t &temporary_terms_idxs,
-                                            deriv_node_temp_terms_t &tef_terms) const
+                                            const deriv_node_temp_terms_t &tef_terms) const
 {
   assert(output_type != oMatlabOutsideModel);
 
@@ -6882,7 +6880,7 @@ void
 FirstDerivExternalFunctionNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                                         bool lhs_rhs, const temporary_terms_t &temporary_terms,
                                         const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                                        deriv_node_temp_terms_t &tef_terms) const
+                                        const deriv_node_temp_terms_t &tef_terms) const
 {
   temporary_terms_t::const_iterator it = temporary_terms.find(const_cast<FirstDerivExternalFunctionNode *>(this));
   if (it != temporary_terms.end())
@@ -7190,7 +7188,7 @@ SecondDerivExternalFunctionNode::composeDerivatives(const vector<expr_t> &dargs)
 void
 SecondDerivExternalFunctionNode::writeJsonOutput(ostream &output,
                                                  const temporary_terms_t &temporary_terms,
-                                                 deriv_node_temp_terms_t &tef_terms,
+                                                 const deriv_node_temp_terms_t &tef_terms,
                                                  const bool isdynamic) const
 {
   // If current node is a temporary term
@@ -7221,7 +7219,7 @@ void
 SecondDerivExternalFunctionNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                                              const temporary_terms_t &temporary_terms,
                                              const temporary_terms_idxs_t &temporary_terms_idxs,
-                                             deriv_node_temp_terms_t &tef_terms) const
+                                             const deriv_node_temp_terms_t &tef_terms) const
 {
   assert(output_type != oMatlabOutsideModel);
 
@@ -7459,7 +7457,7 @@ void
 SecondDerivExternalFunctionNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                                          bool lhs_rhs, const temporary_terms_t &temporary_terms,
                                          const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                                         deriv_node_temp_terms_t &tef_terms) const
+                                         const deriv_node_temp_terms_t &tef_terms) const
 {
   cerr << "SecondDerivExternalFunctionNode::compile: not implemented." << endl;
   exit(EXIT_FAILURE);
@@ -7526,7 +7524,7 @@ void
 VarExpectationNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                                 const temporary_terms_t &temporary_terms,
                                 const temporary_terms_idxs_t &temporary_terms_idxs,
-                                deriv_node_temp_terms_t &tef_terms) const
+                                const deriv_node_temp_terms_t &tef_terms) const
 {
   assert(output_type != oMatlabOutsideModel);
 
@@ -7677,7 +7675,7 @@ void
 VarExpectationNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                             bool lhs_rhs, const temporary_terms_t &temporary_terms,
                             const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                            deriv_node_temp_terms_t &tef_terms) const
+                            const deriv_node_temp_terms_t &tef_terms) const
 {
   cerr << "VarExpectationNode::compile not implemented." << endl;
   exit(EXIT_FAILURE);
@@ -7845,7 +7843,7 @@ VarExpectationNode::substituteStaticAuxiliaryVariable() const
 void
 VarExpectationNode::writeJsonOutput(ostream &output,
                                     const temporary_terms_t &temporary_terms,
-                                    deriv_node_temp_terms_t &tef_terms,
+                                    const deriv_node_temp_terms_t &tef_terms,
                                     const bool isdynamic) const
 {
   output << "var_expectation("
@@ -7902,7 +7900,7 @@ void
 PacExpectationNode::writeOutput(ostream &output, ExprNodeOutputType output_type,
                                 const temporary_terms_t &temporary_terms,
                                 const temporary_terms_idxs_t &temporary_terms_idxs,
-                                deriv_node_temp_terms_t &tef_terms) const
+                                const deriv_node_temp_terms_t &tef_terms) const
 {
   assert(output_type != oMatlabOutsideModel);
 
@@ -8105,7 +8103,7 @@ void
 PacExpectationNode::compile(ostream &CompileCode, unsigned int &instruction_number,
                             bool lhs_rhs, const temporary_terms_t &temporary_terms,
                             const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                            deriv_node_temp_terms_t &tef_terms) const
+                            const deriv_node_temp_terms_t &tef_terms) const
 {
   cerr << "PacExpectationNode::compile not implemented." << endl;
   exit(EXIT_FAILURE);
@@ -8257,7 +8255,7 @@ PacExpectationNode::substituteStaticAuxiliaryVariable() const
 void
 PacExpectationNode::writeJsonOutput(ostream &output,
                                     const temporary_terms_t &temporary_terms,
-                                    deriv_node_temp_terms_t &tef_terms,
+                                    const deriv_node_temp_terms_t &tef_terms,
                                     const bool isdynamic) const
 {
   output << "pac_expectation("
diff --git a/src/ExprNode.hh b/src/ExprNode.hh
index 7ec178ebb2231c6469369076a883b8cfde508bb9..c04c2676fe7a6d702bd4c8e354ba242236674184 100644
--- a/src/ExprNode.hh
+++ b/src/ExprNode.hh
@@ -229,9 +229,9 @@ class ExprNode
         \param[in] a map from temporary_terms to integers indexes (in the
                    MATLAB or Julia vector of temporary terms); can be empty
                    when writing C or MATLAB with block decomposition)
-        \param[in,out] tef_terms the set of already written external function nodes
+        \param[in] tef_terms the set of already written external function nodes
       */
-      virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const = 0;
+      virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const = 0;
 
       //! returns true if the expr node contains an external function
       virtual bool containsExternalFunction() const = 0;
@@ -246,7 +246,7 @@ class ExprNode
       void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs) const;
 
       //! Writes output of node in JSON syntax
-      virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic = true) const = 0;
+      virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic = true) const = 0;
 
       virtual int precedenceJson(const temporary_terms_t &temporary_terms) const;
 
@@ -331,7 +331,7 @@ class ExprNode
       };
 
       virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException) = 0;
-      virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const = 0;
+      virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const = 0;
       void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic) const;
       //! Creates a static version of this node
       /*!
@@ -570,14 +570,14 @@ public:
     return id;
   };
   virtual void prepareForDerivation();
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
   virtual bool containsExternalFunction() const;
   virtual void collectVARLHSVariable(set<expr_t> &result) const;
   virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
   virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const;
   virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException);
-  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const;
+  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const;
   virtual expr_t toStatic(DataTree &static_datatree) const;
   virtual void computeXrefs(EquationInfo &ei) const;
   virtual pair<int, expr_t> normalizeEquation(int symb_id_endo, vector<pair<int, pair<expr_t, expr_t> > >  &List_of_Op_RHS) const;
@@ -637,8 +637,8 @@ private:
 public:
   VariableNode(DataTree &datatree_arg, int symb_id_arg, int lag_arg);
   virtual void prepareForDerivation();
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
   virtual bool containsExternalFunction() const;
   virtual void collectVARLHSVariable(set<expr_t> &result) const;
   virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
@@ -650,7 +650,7 @@ public:
                                      int equation) const;
   virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const;
   virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException);
-  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const;
+  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const;
   virtual expr_t toStatic(DataTree &static_datatree) const;
   virtual void computeXrefs(EquationInfo &ei) const;
   SymbolType
@@ -736,8 +736,8 @@ public:
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
                                      bool is_matlab, NodeTreeReference tr) const;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
   virtual bool containsExternalFunction() const;
   virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type,
                                            const temporary_terms_t &temporary_terms,
@@ -762,7 +762,7 @@ public:
   virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const;
   static double eval_opcode(UnaryOpcode op_code, double v) throw (EvalException, EvalExternalFunctionException);
   virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException);
-  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const;
+  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const;
   //! Returns operand
   expr_t
   get_arg() const
@@ -849,8 +849,8 @@ public:
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
                                      bool is_matlab, NodeTreeReference tr) const;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
   virtual bool containsExternalFunction() const;
   virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type,
                                            const temporary_terms_t &temporary_terms,
@@ -875,7 +875,7 @@ public:
   virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const;
   static double eval_opcode(double v1, BinaryOpcode op_code, double v2, int derivOrder) throw (EvalException, EvalExternalFunctionException);
   virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException);
-  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const;
+  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const;
   virtual expr_t Compute_RHS(expr_t arg1, expr_t arg2, int op, int op_type) const;
   //! Returns first operand
   expr_t
@@ -981,8 +981,8 @@ public:
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
                                      bool is_matlab, NodeTreeReference tr) const;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
   virtual bool containsExternalFunction() const;
   virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type,
                                            const temporary_terms_t &temporary_terms,
@@ -1007,7 +1007,7 @@ public:
   virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const;
   static double eval_opcode(double v1, TrinaryOpcode op_code, double v2, double v3) throw (EvalException, EvalExternalFunctionException);
   virtual double eval(const eval_context_t &eval_context) const throw (EvalException, EvalExternalFunctionException);
-  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const;
+  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const;
   virtual expr_t toStatic(DataTree &static_datatree) const;
   virtual void computeXrefs(EquationInfo &ei) const;
   virtual pair<int, expr_t> normalizeEquation(int symb_id_endo, vector<pair<int, pair<expr_t, expr_t> > >  &List_of_Op_RHS) const;
@@ -1070,12 +1070,12 @@ protected:
   const int symb_id;
   const vector<expr_t> arguments;
   //! Returns true if the given external function has been written as a temporary term
-  bool alreadyWrittenAsTefTerm(int the_symb_id, deriv_node_temp_terms_t &tef_terms) const;
+  bool alreadyWrittenAsTefTerm(int the_symb_id, const deriv_node_temp_terms_t &tef_terms) const;
   //! Returns the index in the tef_terms map of this external function
-  int getIndxInTefTerms(int the_symb_id, deriv_node_temp_terms_t &tef_terms) const throw (UnknownFunctionNameAndArgs);
+  int getIndxInTefTerms(int the_symb_id, const deriv_node_temp_terms_t &tef_terms) const throw (UnknownFunctionNameAndArgs);
   //! Helper function to write output arguments of any given external function
-  void writeExternalFunctionArguments(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  void writeJsonExternalFunctionArguments(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  void writeExternalFunctionArguments(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  void writeJsonExternalFunctionArguments(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
 public:
   AbstractExternalFunctionNode(DataTree &datatree_arg, int symb_id_arg,
                                const vector<expr_t> &arguments_arg);
@@ -1083,8 +1083,8 @@ public:
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
                                      bool is_matlab, NodeTreeReference tr) const = 0;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const = 0;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic = true) const = 0;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const = 0;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic = true) const = 0;
   virtual bool containsExternalFunction() const;
   virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type,
                                            const temporary_terms_t &temporary_terms,
@@ -1111,9 +1111,9 @@ public:
   unsigned int compileExternalFunctionArguments(ostream &CompileCode, unsigned int &instruction_number,
                                                 bool lhs_rhs, const temporary_terms_t &temporary_terms,
                                                 const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                                                deriv_node_temp_terms_t &tef_terms) const;
+                                                const deriv_node_temp_terms_t &tef_terms) const;
 
-  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const = 0;
+  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const = 0;
   virtual expr_t toStatic(DataTree &static_datatree) const = 0;
   virtual void computeXrefs(EquationInfo &ei) const = 0;
   virtual pair<int, expr_t> normalizeEquation(int symb_id_endo, vector<pair<int, pair<expr_t, expr_t> > >  &List_of_Op_RHS) const;
@@ -1146,7 +1146,7 @@ public:
   virtual bool containsExogenous() const;
   virtual bool isDiffPresent(void) const;
   virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const;
-  virtual void writePrhs(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms, const string &ending) const;
+  virtual void writePrhs(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms, const string &ending) const;
   virtual expr_t replaceTrendVar() const;
   virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const;
   virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const = 0;
@@ -1172,8 +1172,8 @@ public:
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
                                      bool is_matlab, NodeTreeReference tr) const;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
   virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type,
                                            const temporary_terms_t &temporary_terms,
                                            const temporary_terms_idxs_t &temporary_terms_idxs,
@@ -1192,7 +1192,7 @@ public:
                                      int Curr_block,
                                      vector< vector<temporary_terms_t> > &v_temporary_terms,
                                      int equation) const;
-  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, deriv_node_temp_terms_t &tef_terms) const;
+  virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const;
   virtual expr_t toStatic(DataTree &static_datatree) const;
   virtual void computeXrefs(EquationInfo &ei) const;
   virtual expr_t buildSimilarExternalFunctionNode(vector<expr_t> &alt_args, DataTree &alt_datatree) const;
@@ -1218,12 +1218,12 @@ public:
                                      int Curr_block,
                                      vector< vector<temporary_terms_t> > &v_temporary_terms,
                                      int equation) const;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
   virtual void compile(ostream &CompileCode, unsigned int &instruction_number,
                        bool lhs_rhs, const temporary_terms_t &temporary_terms,
                        const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                       deriv_node_temp_terms_t &tef_terms) const;
+                       const deriv_node_temp_terms_t &tef_terms) const;
   virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type,
                                            const temporary_terms_t &temporary_terms,
                                            const temporary_terms_idxs_t &temporary_terms_idxs,
@@ -1263,12 +1263,12 @@ public:
                                      int Curr_block,
                                      vector< vector<temporary_terms_t> > &v_temporary_terms,
                                      int equation) const;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
   virtual void compile(ostream &CompileCode, unsigned int &instruction_number,
                        bool lhs_rhs, const temporary_terms_t &temporary_terms,
                        const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                       deriv_node_temp_terms_t &tef_terms) const;
+                       const deriv_node_temp_terms_t &tef_terms) const;
   virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type,
                                            const temporary_terms_t &temporary_terms,
                                            const temporary_terms_idxs_t &temporary_terms_idxs,
@@ -1299,7 +1299,7 @@ public:
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
                                      bool is_matlab, NodeTreeReference tr) const;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
   virtual void computeTemporaryTerms(map<expr_t, int> &reference_count,
                                      temporary_terms_t &temporary_terms,
                                      map<expr_t, pair<int, int> > &first_occurence,
@@ -1338,7 +1338,7 @@ public:
   virtual void compile(ostream &CompileCode, unsigned int &instruction_number,
                        bool lhs_rhs, const temporary_terms_t &temporary_terms,
                        const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                       deriv_node_temp_terms_t &tef_terms) const;
+                       const deriv_node_temp_terms_t &tef_terms) const;
   virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const;
   virtual void collectVARLHSVariable(set<expr_t> &result) const;
   virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
@@ -1360,7 +1360,7 @@ public:
   virtual bool isVarModelReferenced(const string &model_info_name) const;
   virtual void getEndosAndMaxLags(map<string, int> &model_endos_and_lags) const;
   virtual expr_t substituteStaticAuxiliaryVariable() const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
 };
 
 class PacExpectationNode : public ExprNode
@@ -1382,7 +1382,7 @@ public:
   virtual void computeTemporaryTerms(map<expr_t, pair<int, NodeTreeReference> > &reference_count,
                                      map<NodeTreeReference, temporary_terms_t> &temp_terms_map,
                                      bool is_matlab, NodeTreeReference tr) const;
-  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, deriv_node_temp_terms_t &tef_terms) const;
+  virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const;
   virtual void computeTemporaryTerms(map<expr_t, int> &reference_count,
                                      temporary_terms_t &temporary_terms,
                                      map<expr_t, pair<int, int> > &first_occurence,
@@ -1421,7 +1421,7 @@ public:
   virtual void compile(ostream &CompileCode, unsigned int &instruction_number,
                        bool lhs_rhs, const temporary_terms_t &temporary_terms,
                        const map_idx_t &map_idx, bool dynamic, bool steady_dynamic,
-                       deriv_node_temp_terms_t &tef_terms) const;
+                       const deriv_node_temp_terms_t &tef_terms) const;
   virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const;
   virtual void collectVARLHSVariable(set<expr_t> &result) const;
   virtual void collectDynamicVariables(SymbolType type_arg, set<pair<int, int> > &result) const;
@@ -1443,7 +1443,7 @@ public:
   virtual bool isVarModelReferenced(const string &model_info_name) const;
   virtual void getEndosAndMaxLags(map<string, int> &model_endos_and_lags) const;
   virtual expr_t substituteStaticAuxiliaryVariable() const;
-  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
+  virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const;
 };
 
 #endif
diff --git a/src/ModelTree.cc b/src/ModelTree.cc
index a0e40e56bcb093617465bde6b8761af6aacc2b5f..11c12a04a159a3ce3631b3c2d9f963c57acbf185 100644
--- a/src/ModelTree.cc
+++ b/src/ModelTree.cc
@@ -2005,7 +2005,6 @@ ModelTree::isNonstationary(int symb_id) const
 void
 ModelTree::writeJsonModelEquations(ostream &output, bool residuals) const
 {
-  deriv_node_temp_terms_t tef_terms;
   vector<pair<string, string> > eqtags;
   temporary_terms_t tt_empty;
   if (residuals)
@@ -2025,11 +2024,11 @@ ModelTree::writeJsonModelEquations(ostream &output, bool residuals) const
         {
           output << "{\"residual\": {"
                  << "\"lhs\": \"";
-          lhs->writeJsonOutput(output, temporary_terms, tef_terms);
+          lhs->writeJsonOutput(output, temporary_terms, {});
           output << "\"";
 
           output << ", \"rhs\": \"";
-          rhs->writeJsonOutput(output, temporary_terms, tef_terms);
+          rhs->writeJsonOutput(output, temporary_terms, {});
           output << "\"";
           try
             {
@@ -2037,7 +2036,7 @@ ModelTree::writeJsonModelEquations(ostream &output, bool residuals) const
               if (rhs->eval(eval_context_t()) != 0)
                 {
                   output << ", \"rhs\": \"";
-                  rhs->writeJsonOutput(output, temporary_terms, tef_terms);
+                  rhs->writeJsonOutput(output, temporary_terms, {});
                   output << "\"";
                 }
             }
@@ -2049,9 +2048,9 @@ ModelTree::writeJsonModelEquations(ostream &output, bool residuals) const
       else
         {
           output << "{\"lhs\": \"";
-          lhs->writeJsonOutput(output, tt_empty, tef_terms);
+          lhs->writeJsonOutput(output, tt_empty, {});
           output << "\", \"rhs\": \"";
-          rhs->writeJsonOutput(output, tt_empty, tef_terms);
+          rhs->writeJsonOutput(output, tt_empty, {});
           output << "\""
                  << ", \"line\": " << equations_lineno[eq];
 
diff --git a/src/NumericalInitialization.cc b/src/NumericalInitialization.cc
index ad199014b8862e6cccbc03a7738a834312aea3dc..4601634be5fb3f0500f95a35ba2e03f27bcbc0c7 100644
--- a/src/NumericalInitialization.cc
+++ b/src/NumericalInitialization.cc
@@ -66,9 +66,8 @@ InitParamStatement::writeJuliaOutput(ostream &output, const string &basename)
 void
 InitParamStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"param_init\", \"name\": \"" << symbol_table.getName(symb_id) << "\", " << "\"value\": \"";
-  param_value->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+  param_value->writeJsonOutput(output, {}, {});
   output << "\"}";
 }
 
@@ -177,14 +176,13 @@ InitOrEndValStatement::writeInitValues(ostream &output) const
 void
 InitOrEndValStatement::writeJsonInitValues(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   for (init_values_t::const_iterator it = init_values.begin();
        it != init_values.end(); it++)
     {
       if (it != init_values.begin())
         output << ", ";
       output << "{\"name\": \"" << symbol_table.getName(it->first) << "\", " << "\"value\": \"";
-      it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
 }
@@ -419,7 +417,6 @@ HistValStatement::writeOutput(ostream &output, const string &basename, bool mini
 void
 HistValStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"hist_val\", \"vals\": [";
   for (hist_values_t::const_iterator it = hist_values.begin();
        it != hist_values.end(); it++)
@@ -429,7 +426,7 @@ HistValStatement::writeJsonOutput(ostream &output) const
       output << "{ \"name\": \"" << symbol_table.getName(it->first.first) << "\""
              << ", \"lag\": " << it->first.second
              << ", \"value\": \"";
-      it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
   output << "]}";
@@ -516,7 +513,6 @@ HomotopyStatement::writeOutput(ostream &output, const string &basename, bool min
 void
 HomotopyStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"homotopy\", "
          << "\"values\": [";
   for (homotopy_values_t::const_iterator it = homotopy_values.begin();
@@ -527,11 +523,11 @@ HomotopyStatement::writeJsonOutput(ostream &output) const
       output << "{\"name\": \"" << symbol_table.getName(it->first) << "\""
              << ", \"initial_value\": \"";
       if (it->second.first != NULL)
-        it->second.first->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+        it->second.first->writeJsonOutput(output, {}, {});
       else
         output << "NaN";
       output << "\", \"final_value\": \"";
-      it->second.second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second.second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
   output << "]"
@@ -625,7 +621,6 @@ LoadParamsAndSteadyStateStatement::writeOutput(ostream &output, const string &ba
 void
 LoadParamsAndSteadyStateStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"load_params_and_steady_state\""
          << "\"values\": [";
   for (map<int, string>::const_iterator it = content.begin();
diff --git a/src/Shocks.cc b/src/Shocks.cc
index 5a93206105d150a710048067a1a29f8e50b9a602..cc8343c0298504d9791fb565e96aee3e71e3c049 100644
--- a/src/Shocks.cc
+++ b/src/Shocks.cc
@@ -70,7 +70,6 @@ AbstractShocksStatement::writeDetShocks(ostream &output) const
 void
 AbstractShocksStatement::writeJsonDetShocks(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "\"deterministic_shocks\": [";
   for (det_shocks_t::const_iterator it = det_shocks.begin();
        it != det_shocks.end(); it++)
@@ -87,7 +86,7 @@ AbstractShocksStatement::writeJsonDetShocks(ostream &output) const
           output << "{\"period1\": " << it1->period1 << ", "
                  << "\"period2\": " << it1->period2 << ", "
                  << "\"value\": \"";
-          it1->value->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+          it1->value->writeJsonOutput(output, {}, {});
           output << "\"}";
         }
       output << "]}";
@@ -154,7 +153,6 @@ ShocksStatement::writeOutput(ostream &output, const string &basename, bool minim
 void
 ShocksStatement::writeJsonOutput(ostream &output) const
 {
-  deriv_node_temp_terms_t tef_terms;
   output << "{\"statementName\": \"shocks\""
          << ", \"overwrite\": ";
   if (overwrite)
@@ -173,7 +171,7 @@ ShocksStatement::writeJsonOutput(ostream &output) const
         output << ", ";
       output << "{\"name\": \"" << symbol_table.getName(it->first) << "\", "
              << "\"variance\": \"";
-      it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
   output << "]"
@@ -184,7 +182,7 @@ ShocksStatement::writeJsonOutput(ostream &output) const
         output << ", ";
       output << "{\"name\": \"" << symbol_table.getName(it->first) << "\", "
              << "\"stderr\": \"";
-      it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
   output << "]"
@@ -197,7 +195,7 @@ ShocksStatement::writeJsonOutput(ostream &output) const
              << "\"name\": \"" << symbol_table.getName(it->first.first) << "\", "
              << "\"name2\": \"" << symbol_table.getName(it->first.second) << "\", "
              << "\"covariance\": \"";
-      it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
   output << "]"
@@ -210,7 +208,7 @@ ShocksStatement::writeJsonOutput(ostream &output) const
              << "\"name\": \"" << symbol_table.getName(it->first.first) << "\", "
              << "\"name2\": \"" << symbol_table.getName(it->first.second) << "\", "
              << "\"correlation\": \"";
-      it->second->writeJsonOutput(output, temporary_terms_t(), tef_terms);
+      it->second->writeJsonOutput(output, {}, {});
       output << "\"}";
     }
   output << "]"
diff --git a/src/SteadyStateModel.cc b/src/SteadyStateModel.cc
index b1385ad8fd756340b4ee105da7afe62773c11f0d..37a9dd34a344965cd5e8ca844214f296c02e3985 100644
--- a/src/SteadyStateModel.cc
+++ b/src/SteadyStateModel.cc
@@ -277,9 +277,7 @@ SteadyStateModel::writeJsonSteadyStateFile(ostream &output, bool transformComput
   if (def_table.size() == 0)
     return;
 
-  deriv_node_temp_terms_t tef_terms;
   vector<pair<string, string> > eqtags;
-  temporary_terms_t tt_empty;
 
   output << "{\"steady_state_model\": [";
 
@@ -299,13 +297,13 @@ SteadyStateModel::writeJsonSteadyStateFile(ostream &output, bool transformComput
             variable_node_map.find(make_pair(symb_ids[j], 0));
           assert(it != variable_node_map.end());
           output << "\"";
-          dynamic_cast<ExprNode *>(it->second)->writeJsonOutput(output, tt_empty, tef_terms, false);
+          dynamic_cast<ExprNode *>(it->second)->writeJsonOutput(output, {}, {}, false);
           output << "\"";
         }
       if (symb_ids.size() > 1)
         output << "]";
       output << ", \"rhs\":\"";
-      def_table[i].second->writeJsonOutput(output, tt_empty, tef_terms, false);
+      def_table[i].second->writeJsonOutput(output, {}, {}, false);
       output << "\"}" << endl;
     }