diff --git a/ComputingTasks.cc b/ComputingTasks.cc
index 61edad6abcddd989c811f8737583fab7f0d3119e..b755a3adea08507a91a21b25a9987b203b01fe00 100644
--- a/ComputingTasks.cc
+++ b/ComputingTasks.cc
@@ -559,7 +559,7 @@ ObservationTrendsStatement::writeOutput(ostream &output, const string &basename)
 
   for(it = trend_elements.begin(); it != trend_elements.end(); it++)
     {
-      Type type = symbol_table.getType(it->first);
+      SymbolType type = symbol_table.getType(it->first);
       if (type == eEndogenous)
         {
           output << "tmp1 = strmatch('" << it->first << "',options_.varobs,'exact');\n";
diff --git a/DataTree.cc b/DataTree.cc
index e2b31be239c984a178464723489dfed32b9c9edc..4579db474b984272d1b02c266ec9c80a52c41c36 100644
--- a/DataTree.cc
+++ b/DataTree.cc
@@ -56,7 +56,7 @@ NodeID
 DataTree::AddVariable(const string &name, int lag)
 {
   int symb_id = symbol_table.getID(name);
-  Type type = symbol_table.getType(name);
+  SymbolType type = symbol_table.getType(name);
 
   variable_node_map_type::iterator it = variable_node_map.find(make_pair(make_pair(symb_id, type), lag));
   if (it != variable_node_map.end())
diff --git a/ExprNode.cc b/ExprNode.cc
index 964dd6534be1005421fcbebbf3c23c14069c3052..98ed29252375db7db143f2b5f022446a311faefc 100644
--- a/ExprNode.cc
+++ b/ExprNode.cc
@@ -164,7 +164,7 @@ NumConstNode::collectEndogenous(set<pair<int, int> > &result) const
 {
 }
 
-VariableNode::VariableNode(DataTree &datatree_arg, int symb_id_arg, Type type_arg, int lag_arg) :
+VariableNode::VariableNode(DataTree &datatree_arg, int symb_id_arg, SymbolType type_arg, int lag_arg) :
   ExprNode(datatree_arg),
   symb_id(symb_id_arg),
   type(type_arg),
diff --git a/NumericalInitialization.cc b/NumericalInitialization.cc
index 020e4cbeb6f7df488453a848db350205eae844a5..d92a4912a47f3fd8a2d2cc2ac01e56c353cf5b7a 100644
--- a/NumericalInitialization.cc
+++ b/NumericalInitialization.cc
@@ -54,7 +54,7 @@ InitOrEndValStatement::writeInitValues(ostream &output) const
       const string &name = it->first;
       const NodeID expression = it->second;
 
-      Type type = symbol_table.getType(name);
+      SymbolType type = symbol_table.getType(name);
       int id = symbol_table.getID(name) + 1;
 
       if (type == eEndogenous)
@@ -144,7 +144,7 @@ HistValStatement::writeOutput(ostream &output, const string &basename) const
       const int &lag = it->first.second;
       const NodeID expression = it->second;
 
-      Type type = symbol_table.getType(name);
+      SymbolType type = symbol_table.getType(name);
       int id = symbol_table.getID(name) + 1;
 
       if (type == eEndogenous)
@@ -196,7 +196,7 @@ HomotopyStatement::writeOutput(ostream &output, const string &basename) const
       const NodeID expression1 = it->second.first;
       const NodeID expression2 = it->second.second;
 
-      const Type type = symbol_table.getType(name);
+      const SymbolType type = symbol_table.getType(name);
       const int id = symbol_table.getID(name) + 1;
 
       output << "options_.homotopy_values = vertcat(options_.homotopy_values, [ " << type << ", " << id << ", ";
diff --git a/ParsingDriver.cc b/ParsingDriver.cc
index 341b9b303bd3c50da18e101d83fbabdb9a78e300..26bb0eda7555c29a5130264bf36be587c7033bdd 100644
--- a/ParsingDriver.cc
+++ b/ParsingDriver.cc
@@ -102,7 +102,7 @@ ParsingDriver::warning(const string &m)
 }
 
 void
-ParsingDriver::declare_symbol(string *name, Type type, string *tex_name)
+ParsingDriver::declare_symbol(string *name, SymbolType type, string *tex_name)
 {
   try
     {
@@ -162,7 +162,7 @@ NodeID
 ParsingDriver::add_model_variable(string *name, string *olag)
 {
   check_symbol_existence(*name);
-  Type type = mod_file->symbol_table.getType(*name);
+  SymbolType type = mod_file->symbol_table.getType(*name);
   int lag = atoi(olag->c_str());
 
   if (type == eModFileLocalVariable)
@@ -271,7 +271,7 @@ void
 ParsingDriver::init_val(string *name, NodeID rhs)
 {
   check_symbol_existence(*name);
-  Type type = mod_file->symbol_table.getType(*name);
+  SymbolType type = mod_file->symbol_table.getType(*name);
 
   if (type != eEndogenous
       && type != eExogenous
@@ -305,7 +305,7 @@ void
 ParsingDriver::hist_val(string *name, string *lag, NodeID rhs)
 {
   check_symbol_existence(*name);
-  Type type = mod_file->symbol_table.getType(*name);
+  SymbolType type = mod_file->symbol_table.getType(*name);
 
   if (type != eEndogenous
       && type != eExogenous
@@ -328,7 +328,7 @@ void
 ParsingDriver::homotopy_val(string *name, NodeID val1, NodeID val2)
 {
   check_symbol_existence(*name);
-  Type type = mod_file->symbol_table.getType(*name);
+  SymbolType type = mod_file->symbol_table.getType(*name);
 
   if (type != eParameter
       && type != eExogenous
@@ -430,7 +430,7 @@ void
 ParsingDriver::add_det_shock(string *var)
 {
   check_symbol_existence(*var);
-  Type type = mod_file->symbol_table.getType(*var);
+  SymbolType type = mod_file->symbol_table.getType(*var);
   if (type != eExogenous && type != eExogenousDet)
     error("shocks: shocks can only be applied to exogenous variables");
 
diff --git a/SymbolTable.cc b/SymbolTable.cc
index bd3190c06d93b415ce14ecbc3a53d415ee1acdd2..23d411db6fe329ec05c48806b9f3b10e5ab8b441 100644
--- a/SymbolTable.cc
+++ b/SymbolTable.cc
@@ -29,7 +29,7 @@ SymbolTable::SymbolTable() : endo_nbr(0), exo_nbr(0), exo_det_nbr(0), recur_nbr(
 }
 
 void
-SymbolTable::addSymbol(const string &name, Type type, const string &tex_name) throw (AlreadyDeclaredException)
+SymbolTable::addSymbol(const string &name, SymbolType type, const string &tex_name) throw (AlreadyDeclaredException)
 {
   if (exists(name))
     {
@@ -69,7 +69,7 @@ SymbolTable::addSymbol(const string &name, Type type, const string &tex_name) th
       break;
     }
 
-  symbol_type symbol(type, id); 
+  named_symbol_type symbol(type, id); 
   symbol_table[name] = symbol;
   name_table[symbol] = name;
   tex_name_table[symbol] = tex_name;
diff --git a/VariableTable.cc b/VariableTable.cc
index e05b335585136ba4b0442e73d31d76469dc50f92..b439dfe83c1b948839377b7904357aec16791f50 100644
--- a/VariableTable.cc
+++ b/VariableTable.cc
@@ -33,7 +33,7 @@ VariableTable::VariableTable(const SymbolTable &symbol_table_arg) :
 }
 
 int
-VariableTable::addVariable(Type type, int symb_id, int lag) throw (DynJacobianColsAlreadyComputedException)
+VariableTable::addVariable(SymbolType type, int symb_id, int lag) throw (DynJacobianColsAlreadyComputedException)
 {
   if (dyn_jacobian_cols_table.size() != 0)
     throw DynJacobianColsAlreadyComputedException();
diff --git a/include/CodeInterpreter.hh b/include/CodeInterpreter.hh
index b6d0e528f213c9d1e3c5d008668ca7ed7d0d2ffe..d698bb2d7425d7e2325576a5d1acd2cbd2f56535 100644
--- a/include/CodeInterpreter.hh
+++ b/include/CodeInterpreter.hh
@@ -66,7 +66,7 @@ enum BlockSimulationType
 
 //! Enumeration of possible symbol types
 /*! Warning: do not to change existing values: the order matters for VariableTable (at least for endogenous and exogenous types), and the values matter for homotopy_setup command */
-enum Type
+enum SymbolType
   {
     eEndogenous = 0,               //!< Endogenous
     eExogenous = 1,                //!< Exogenous
diff --git a/include/DataTree.hh b/include/DataTree.hh
index d14eccae722fca540c90ef2eb90ee3b487a34279..3ee186794c222351a4fe18946a6eec74fd91de3f 100644
--- a/include/DataTree.hh
+++ b/include/DataTree.hh
@@ -62,7 +62,7 @@ protected:
   typedef map<int, NodeID> num_const_node_map_type;
   num_const_node_map_type num_const_node_map;
   //! Type (symbol_id, type, lag) used as key
-  typedef map<pair<pair<int, Type>, int>, NodeID> variable_node_map_type;
+  typedef map<pair<pair<int, SymbolType>, int>, NodeID> variable_node_map_type;
   variable_node_map_type variable_node_map;
   typedef map<pair<NodeID, int>, NodeID> unary_op_node_map_type;
   unary_op_node_map_type unary_op_node_map;
diff --git a/include/ExprNode.hh b/include/ExprNode.hh
index 2f877821917b54376d15744871f2735f19e8aca2..55a2f9e12c614710f3c8eebfdd5b78563228dfb9 100644
--- a/include/ExprNode.hh
+++ b/include/ExprNode.hh
@@ -61,7 +61,7 @@ enum ExprNodeOutputType
 //! Type for evaluation contexts
 /*! The key is a pair (symbol id, symbol type)
   Lags are assumed to be null */
-typedef map<pair<int, Type>, double> eval_context_type;
+typedef map<pair<int, SymbolType>, double> eval_context_type;
 
 /* Equal to 1 for Matlab langage, or to 0 for C language
    In Matlab, array indexes begin at 1, while they begin at 0 in C */
@@ -189,13 +189,13 @@ class VariableNode : public ExprNode
 private:
   //! Id from the symbol table
   const int symb_id;
-  const Type type;
+  const SymbolType type;
   const int lag;
   //! Id from the variable table (-1 if not a endogenous/exogenous/recursive)
   int var_id;
   virtual NodeID computeDerivative(int varID);
 public:
-  VariableNode(DataTree &datatree_arg, int symb_id_arg, Type type_arg, int lag_arg);
+  VariableNode(DataTree &datatree_arg, int symb_id_arg, SymbolType type_arg, int lag_arg);
   virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_type &temporary_terms = temporary_terms_type()) const;
   virtual void collectEndogenous(set<pair<int, int> > &result) const;
   virtual double eval(const eval_context_type &eval_context) const throw (EvalException);
diff --git a/include/ParsingDriver.hh b/include/ParsingDriver.hh
index a4000579bf96492d58c5c4f8cf08e26c0402efba..3ce2065fa6368bdeb988a356f4c452cc25cbfedf 100644
--- a/include/ParsingDriver.hh
+++ b/include/ParsingDriver.hh
@@ -71,7 +71,7 @@ private:
   void check_symbol_existence(const string &name);
 
   //! Helper to add a symbol declaration
-  void declare_symbol(string *name, Type type, string *tex_name);
+  void declare_symbol(string *name, SymbolType type, string *tex_name);
 
   //! Creates option "optim_opt" in OptionsList if it doesn't exist, else add a comma, and adds the option name
   void optim_options_helper(const string &name);
diff --git a/include/SymbolTable.hh b/include/SymbolTable.hh
index 746a6941940701ea509172e36293c9e534c572e1..a7e4257acffc22de9d67a8d8f494be547e1cad7e 100644
--- a/include/SymbolTable.hh
+++ b/include/SymbolTable.hh
@@ -41,13 +41,13 @@ class SymbolTable
 {
 private:
   //! A symbol is represented by a pair (type, id)
-  typedef pair<Type, int> symbol_type;
+  typedef pair<SymbolType, int> named_symbol_type;
 
-  typedef map<string, symbol_type> symbol_table_type;
+  typedef map<string, named_symbol_type> symbol_table_type;
   //! Maps strings to pairs (type,id)
   symbol_table_type symbol_table;
 
-  typedef map<symbol_type, string> inv_symbol_table_type;
+  typedef map<named_symbol_type, string> inv_symbol_table_type;
   //! Maps pairs (type, id) to names
   inv_symbol_table_type name_table;
   //! Maps pairs (type, id) to TeX names
@@ -67,10 +67,10 @@ public:
   {
   public:
     //! Symbol type
-    Type type;
+    SymbolType type;
     //! Symbol ID
     int id;
-    UnknownSymbolIDException(Type type_arg, int id_arg) : type(type_arg), id(id_arg) {}
+    UnknownSymbolIDException(SymbolType type_arg, int id_arg) : type(type_arg), id(id_arg) {}
   };
   //! Thrown when trying to declare a symbol twice
   class AlreadyDeclaredException
@@ -99,15 +99,15 @@ public:
   //! Number of unknown functions
   int unknown_function_nbr;
   //! Add a symbol
-  void addSymbol(const string &name, Type type, const string &tex_name = "") throw (AlreadyDeclaredException);
+  void addSymbol(const string &name, SymbolType type, const string &tex_name = "") throw (AlreadyDeclaredException);
   //! Tests if symbol already exists
   inline bool exists(const string &name) const;
   //! Get symbol name by type and ID
-  inline string getNameByID(Type type, int id) const throw (UnknownSymbolIDException);
+  inline string getNameByID(SymbolType type, int id) const throw (UnknownSymbolIDException);
   //! Get TeX name by type and ID
-  inline string getTeXNameByID(Type type, int id) const throw (UnknownSymbolIDException);
+  inline string getTeXNameByID(SymbolType type, int id) const throw (UnknownSymbolIDException);
   //! Get type by name
-  inline Type getType(const string &name) const throw (UnknownSymbolNameException);
+  inline SymbolType getType(const string &name) const throw (UnknownSymbolNameException);
   //! Get ID by name
   inline int getID(const string &name) const throw (UnknownSymbolNameException);
   //! Write output of this class
@@ -122,7 +122,7 @@ SymbolTable::exists(const string &name) const
 }
 
 inline string
-SymbolTable::getNameByID(Type type, int id) const throw (UnknownSymbolIDException)
+SymbolTable::getNameByID(SymbolType type, int id) const throw (UnknownSymbolIDException)
 {
   inv_symbol_table_type::const_iterator iter = name_table.find(make_pair(type, id));
   if (iter != name_table.end())
@@ -132,7 +132,7 @@ SymbolTable::getNameByID(Type type, int id) const throw (UnknownSymbolIDExceptio
 }
 
 inline string
-SymbolTable::getTeXNameByID(Type type, int id) const throw (UnknownSymbolIDException)
+SymbolTable::getTeXNameByID(SymbolType type, int id) const throw (UnknownSymbolIDException)
 {
   inv_symbol_table_type::const_iterator iter = tex_name_table.find(make_pair(type, id));
   if (iter != tex_name_table.end())
@@ -141,7 +141,7 @@ SymbolTable::getTeXNameByID(Type type, int id) const throw (UnknownSymbolIDExcep
     throw UnknownSymbolIDException(type, id);
 }
 
-inline Type
+inline SymbolType
 SymbolTable::getType(const string &name) const throw (UnknownSymbolNameException)
 {
   symbol_table_type::const_iterator iter = symbol_table.find(name);
diff --git a/include/VariableTable.hh b/include/VariableTable.hh
index 9ffb39900bca24cce4fead5c440486424be500a4..50faa8038bab16a1fb450fb76abafd0fc6b6e4ff 100644
--- a/include/VariableTable.hh
+++ b/include/VariableTable.hh
@@ -36,7 +36,7 @@ private:
   const SymbolTable &symbol_table;
   //! A variable is a tuple (type, lag, symbol_id)
   /*! Warning: don't change the order of elements in the tuple, since this determines the lexicographic ordering in computeDynJacobianCols() */
-  typedef pair<pair<Type, int>, int> var_key_type;
+  typedef pair<pair<SymbolType, int>, int> var_key_type;
 
   typedef map<var_key_type, int> variable_table_type;
   //! Maps a tuple (type, lag, symbol_id) to a variable ID
@@ -81,9 +81,9 @@ public:
   class UnknownVariableKeyException
   {
   public:
-    Type type;
+    SymbolType type;
     int symb_id, lag;
-    UnknownVariableKeyException(Type type_arg, int symb_id_arg, int lag_arg) : type(type_arg), symb_id(symb_id_arg), lag(lag_arg) {}
+    UnknownVariableKeyException(SymbolType type_arg, int symb_id_arg, int lag_arg) : type(type_arg), symb_id(symb_id_arg), lag(lag_arg) {}
   };
   //! Thrown when trying to access an unknown variable by var_id
   class UnknownVariableIDException
@@ -103,15 +103,15 @@ public:
   };
   //! Adds a variable in the table, and returns its (newly allocated) variable ID
   /*! Also works if the variable already exists */
-  int addVariable(Type type, int symb_id, int lag) throw (DynJacobianColsAlreadyComputedException);
+  int addVariable(SymbolType type, int symb_id, int lag) throw (DynJacobianColsAlreadyComputedException);
   //! Return variable ID
-  inline int getID(Type type, int symb_id, int lag) const throw (UnknownVariableKeyException);
+  inline int getID(SymbolType type, int symb_id, int lag) const throw (UnknownVariableKeyException);
   //! Return lag of variable
   inline int getLag(int var_id) const throw (UnknownVariableIDException);
   //! Return symbol ID of variable
   inline int getSymbolID(int var_id) const throw (UnknownVariableIDException);
   //! Get variable type
-  inline Type getType(int var_id) const throw (UnknownVariableIDException);
+  inline SymbolType getType(int var_id) const throw (UnknownVariableIDException);
   //! Get number of variables
   inline int size() const;
   //! Get column index in dynamic jacobian
@@ -135,7 +135,7 @@ VariableTable::getDynJacobianCol(int var_id) const throw (DynJacobianColsNotYetC
 }
 
 inline int
-VariableTable::getID(Type type, int symb_id, int lag) const throw (UnknownVariableKeyException)
+VariableTable::getID(SymbolType type, int symb_id, int lag) const throw (UnknownVariableKeyException)
 {
   variable_table_type::const_iterator it = variable_table.find(make_pair(make_pair(type, lag), symb_id));
   if (it == variable_table.end())
@@ -144,7 +144,7 @@ VariableTable::getID(Type type, int symb_id, int lag) const throw (UnknownVariab
     return it->second;
 }
 
-inline Type
+inline SymbolType
 VariableTable::getType(int var_id) const throw (UnknownVariableIDException)
 {
   inv_variable_table_type::const_iterator it = inv_variable_table.find(var_id);