diff --git a/common/include/Dict.hpp b/common/include/Dict.hpp
index 64a55399681c0fbc3c7bcce090d2d4be987c8d9e..f78f0fd10578c43958dcc23195a998c5ba2ece6c 100644
--- a/common/include/Dict.hpp
+++ b/common/include/Dict.hpp
@@ -10,13 +10,14 @@ class Dict
 {
   public :
 
-  enum State {Open, Closed};
-  enum Encoding {Binary, Ascii};
+  enum class State {Open, Closed};
+  enum class Encoding {Binary, Ascii};
 
   public :
 
   static constexpr char const * unknownValueStr = "__unknownValue__";
   static constexpr char const * nullValueStr = "__nullValue__";
+  static constexpr char const * oobValueStr = "__oobValue__";
   static constexpr char const * noChildValueStr = "__noChildValue__";
   static constexpr char const * emptyValueStr = "__emptyValue__";
   static constexpr char const * separatorValueStr = "__separatorValue__";
diff --git a/common/src/Dict.cpp b/common/src/Dict.cpp
index eab564683a7afb11900d3b6496b960ae6cb71f71..85cdae9ae857ec22fbe99a2b373fe9a93efd1734 100644
--- a/common/src/Dict.cpp
+++ b/common/src/Dict.cpp
@@ -6,6 +6,7 @@ Dict::Dict(State state)
   setState(state);
   insert(unknownValueStr);
   insert(nullValueStr);
+  insert(oobValueStr);
   insert(noChildValueStr);
   insert(emptyValueStr);
   insert(numberValueStr);
@@ -301,6 +302,7 @@ bool Dict::isSpecialValue(const std::string & value)
 {
   return value == unknownValueStr
   || value == nullValueStr
+  || value == oobValueStr
   || value == noChildValueStr
   || value == emptyValueStr
   || value == separatorValueStr
diff --git a/reading_machine/include/Action.hpp b/reading_machine/include/Action.hpp
index a0b23a33e0934a72822b350e7d2190af12b74fb4..4afd9e6ff7a085c38a70a6aa6adc176ee263557e 100644
--- a/reading_machine/include/Action.hpp
+++ b/reading_machine/include/Action.hpp
@@ -10,7 +10,7 @@ class Action
 {
   public :
 
-  enum Type
+  enum class Type
   {
     Push,
     Pop,
diff --git a/reading_machine/include/Config.hpp b/reading_machine/include/Config.hpp
index 68408c8ab2a7ab060ea1072c258aea74d15d3a0b..801173f083cda83d6f37087a7f18ead64414670d 100644
--- a/reading_machine/include/Config.hpp
+++ b/reading_machine/include/Config.hpp
@@ -31,7 +31,7 @@ class Config
   static constexpr int nbHypothesesMax = 1;
   static constexpr int maxNbAppliableSplitTransitions = 8;
 
-  enum Object
+  enum class Object
   {
     Buffer,
     Stack
diff --git a/reading_machine/include/Strategy.hpp b/reading_machine/include/Strategy.hpp
index c907b71d4424d222076564d0a1e16a6f69c745f3..c0b33230b63bc024448e0cc1abab6888a3d6ce4f 100644
--- a/reading_machine/include/Strategy.hpp
+++ b/reading_machine/include/Strategy.hpp
@@ -19,7 +19,7 @@ class Strategy
   {
     private :
 
-    enum EndCondition
+    enum class EndCondition
     {
       CannotMove
     };
diff --git a/reading_machine/src/Transition.cpp b/reading_machine/src/Transition.cpp
index db345911e4cbaceb80f09dedd34a7998b6390c7f..e80ae0b4252f5b935aaebf4e27d12766a576de80 100644
--- a/reading_machine/src/Transition.cpp
+++ b/reading_machine/src/Transition.cpp
@@ -758,7 +758,7 @@ void Transition::initEOS(int bufferIndex)
 
   costDynamic = [bufferIndex](const Config & config)
   {
-    int lineIndex = config.getRelativeWordIndex(Config::Buffer, bufferIndex);
+    int lineIndex = config.getRelativeWordIndex(Config::Object::Buffer, bufferIndex);
     if (config.getConst(Config::EOSColName, lineIndex, 0) != Config::EOSSymbol1)
       return std::numeric_limits<int>::max();
 
@@ -772,7 +772,7 @@ void Transition::initNotEOS(int bufferIndex)
 {
   costDynamic = [bufferIndex](const Config & config)
   {
-    int lineIndex = config.getRelativeWordIndex(Config::Buffer, bufferIndex);
+    int lineIndex = config.getRelativeWordIndex(Config::Object::Buffer, bufferIndex);
     if (config.getConst(Config::EOSColName, lineIndex, 0) == Config::EOSSymbol1)
       return std::numeric_limits<int>::max();
 
diff --git a/trainer/include/Trainer.hpp b/trainer/include/Trainer.hpp
index a936baddf4e020859f1b2b62b93a6f62d9ca85cd..ef0f25ec18ab3be0ca9994a4f77dc30ec244adb7 100644
--- a/trainer/include/Trainer.hpp
+++ b/trainer/include/Trainer.hpp
@@ -9,7 +9,7 @@ class Trainer
 {
   public :
 
-  enum TrainAction
+  enum class TrainAction
   {
     ExtractGold,
     ExtractDynamic,