diff --git a/src/language/node_processor/ASTNodeListProcessor.hpp b/src/language/node_processor/ASTNodeListProcessor.hpp
index 0eb6590b58d6444c5d013399a64994bc5bb6d99f..b907b6fda5bc28909923581c565ada76abfe4e84 100644
--- a/src/language/node_processor/ASTNodeListProcessor.hpp
+++ b/src/language/node_processor/ASTNodeListProcessor.hpp
@@ -3,19 +3,12 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 class ASTNodeListProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
diff --git a/src/language/node_processor/AffectationProcessor.hpp b/src/language/node_processor/AffectationProcessor.hpp
index 6ed12a1d33aaea2d71a8dace679ab8fc5a9cb54e..45e0f7390a020ea5938a685dccc986bb9be6a8cb 100644
--- a/src/language/node_processor/AffectationProcessor.hpp
+++ b/src/language/node_processor/AffectationProcessor.hpp
@@ -5,8 +5,6 @@
 
 #include <SymbolTable.hpp>
 
-#include <Demangle.hpp>
-
 template <typename Op>
 struct AffOp;
 
@@ -82,12 +80,6 @@ class AffectationProcessor final : public INodeProcessor
   }()};
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
@@ -119,4 +111,4 @@ class AffectationProcessor final : public INodeProcessor
   }
 };
 
-#endif // AFFECTATION_PROCESSOR_HPP
+#endif   // AFFECTATION_PROCESSOR_HPP
diff --git a/src/language/node_processor/AffectationToStringProcessor.hpp b/src/language/node_processor/AffectationToStringProcessor.hpp
index 456a65deb46455c62e1343b5bf95d82bb63df5c5..7bba4111b81ba9e1df7046b96468bceeb6810e31 100644
--- a/src/language/node_processor/AffectationToStringProcessor.hpp
+++ b/src/language/node_processor/AffectationToStringProcessor.hpp
@@ -5,8 +5,6 @@
 
 #include <SymbolTable.hpp>
 
-#include <Demangle.hpp>
-
 template <typename OperatorT, typename DataT>
 class AffectationToStringProcessor final : public INodeProcessor
 {
@@ -15,12 +13,6 @@ class AffectationToStringProcessor final : public INodeProcessor
   ASTNodeDataVariant* p_value{nullptr};
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
@@ -50,4 +42,4 @@ class AffectationToStringProcessor final : public INodeProcessor
   }
 };
 
-#endif // AFFECTATION_TO_STRING_PROCESSOR_HPP
+#endif   // AFFECTATION_TO_STRING_PROCESSOR_HPP
diff --git a/src/language/node_processor/BinaryExpressionProcessor.hpp b/src/language/node_processor/BinaryExpressionProcessor.hpp
index 6fa8d683b78072194c15984aa8a480f0775c3376..e4594ad5404331b3f60965ceac6dbad3c0576d1a 100644
--- a/src/language/node_processor/BinaryExpressionProcessor.hpp
+++ b/src/language/node_processor/BinaryExpressionProcessor.hpp
@@ -3,10 +3,6 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
-#include <type_traits>
-
 template <typename Op>
 struct BinOp;
 
@@ -197,12 +193,6 @@ class BinaryExpressionProcessor final : public INodeProcessor
   }()};
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
@@ -222,4 +212,4 @@ class BinaryExpressionProcessor final : public INodeProcessor
   }
 };
 
-#endif // BINARY_EXPRESSION_PROCESSOR_HPP
+#endif   // BINARY_EXPRESSION_PROCESSOR_HPP
diff --git a/src/language/node_processor/BreakProcessor.hpp b/src/language/node_processor/BreakProcessor.hpp
index 7046f2342db53823e5edfb1e0caa6487d69a4154..e00bf861fa71ef7279fd64176d4ae00bc0d0a5a3 100644
--- a/src/language/node_processor/BreakProcessor.hpp
+++ b/src/language/node_processor/BreakProcessor.hpp
@@ -3,17 +3,9 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 class BreakProcessor final : public INodeProcessor
 {
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
diff --git a/src/language/node_processor/ConcatExpressionProcessor.hpp b/src/language/node_processor/ConcatExpressionProcessor.hpp
index 1f0c80bed669c5efd6b72db0d042e4902f663c30..0b0d210d17884972d482d9499d544c3ec673cb16 100644
--- a/src/language/node_processor/ConcatExpressionProcessor.hpp
+++ b/src/language/node_processor/ConcatExpressionProcessor.hpp
@@ -3,13 +3,10 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
-#include <type_traits>
-
 template <typename B_DataT>
 class ConcatExpressionProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
 
   PUGS_INLINE auto
@@ -23,12 +20,6 @@ class ConcatExpressionProcessor final : public INodeProcessor
   }
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
@@ -41,4 +32,4 @@ class ConcatExpressionProcessor final : public INodeProcessor
   ConcatExpressionProcessor(ASTNode& node) : m_node{node} {}
 };
 
-#endif // CONCAT_EXPRESSION_PROCESSOR_HPP
+#endif   // CONCAT_EXPRESSION_PROCESSOR_HPP
diff --git a/src/language/node_processor/ContinueProcessor.hpp b/src/language/node_processor/ContinueProcessor.hpp
index c3185da9dbc00eb62cbe3376f9aa5a27ba0c9c81..a6d64d3d527f12a8c22b005c3e5dde4704c7bc67 100644
--- a/src/language/node_processor/ContinueProcessor.hpp
+++ b/src/language/node_processor/ContinueProcessor.hpp
@@ -3,17 +3,9 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 class ContinueProcessor final : public INodeProcessor
 {
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
diff --git a/src/language/node_processor/DoWhileProcessor.hpp b/src/language/node_processor/DoWhileProcessor.hpp
index 52961c30675a3f48f4bc63af7368de6501486674..cd94fef46b65bbbbc04ff0f24c8db9e058c82c7f 100644
--- a/src/language/node_processor/DoWhileProcessor.hpp
+++ b/src/language/node_processor/DoWhileProcessor.hpp
@@ -3,19 +3,12 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 class DoWhileProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
diff --git a/src/language/node_processor/FakeProcessor.hpp b/src/language/node_processor/FakeProcessor.hpp
index 9f1f6c1418a5619ddf320511b14f3a52bc3d6fc8..ac75d68ad6ae0f527c606025018a02f5ccb62530 100644
--- a/src/language/node_processor/FakeProcessor.hpp
+++ b/src/language/node_processor/FakeProcessor.hpp
@@ -3,19 +3,9 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-#include <PugsMacros.hpp>
-
 class FakeProcessor final : public INodeProcessor
 {
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
-  PUGS_INLINE
   void
   execute(ExecUntilBreakOrContinue&)
   {
diff --git a/src/language/node_processor/ForProcessor.hpp b/src/language/node_processor/ForProcessor.hpp
index a342a45d68090ce4cbd25c84c8b96ed16a9933b0..990640db1d3d84db55fb97dd752f18021bb3a734 100644
--- a/src/language/node_processor/ForProcessor.hpp
+++ b/src/language/node_processor/ForProcessor.hpp
@@ -3,19 +3,12 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 class ForProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
diff --git a/src/language/node_processor/INodeProcessor.hpp b/src/language/node_processor/INodeProcessor.hpp
index 36156510540cb86870a9bd98d9727be4774c6774..d0656c487622242f79e24eb4d3fb2147dd56fb05 100644
--- a/src/language/node_processor/INodeProcessor.hpp
+++ b/src/language/node_processor/INodeProcessor.hpp
@@ -1,15 +1,21 @@
 #ifndef I_NODE_PROCESSOR_HPP
 #define I_NODE_PROCESSOR_HPP
 
+#include <Demangle.hpp>
 #include <node_processor/ExecUntilBreakOrContinue.hpp>
 
 #include <string>
+#include <typeinfo>
 
 struct INodeProcessor
 {
   virtual void execute(ExecUntilBreakOrContinue& exec_policy) = 0;
 
-  virtual std::string describe() const = 0;
+  std::string
+  describe() const
+  {
+    return demangle(typeid(*this).name());
+  }
 
   INodeProcessor(const INodeProcessor&) = delete;
 
diff --git a/src/language/node_processor/IfProcessor.hpp b/src/language/node_processor/IfProcessor.hpp
index 60dabe8da6dfdf3a3ce4979c66f9ee7f44bcc231..4d28cce58af953d89d16ec7fe65871b1eb033044 100644
--- a/src/language/node_processor/IfProcessor.hpp
+++ b/src/language/node_processor/IfProcessor.hpp
@@ -3,19 +3,12 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 class IfProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
diff --git a/src/language/node_processor/IncDecExpressionProcessor.hpp b/src/language/node_processor/IncDecExpressionProcessor.hpp
index ba2fb460cab857c9b0a23543b0d08908fc851a14..ca3c387c1f8d3050f901a8577148a8729f3be347 100644
--- a/src/language/node_processor/IncDecExpressionProcessor.hpp
+++ b/src/language/node_processor/IncDecExpressionProcessor.hpp
@@ -5,8 +5,6 @@
 
 #include <SymbolTable.hpp>
 
-#include <Demangle.hpp>
-
 template <typename Op>
 struct IncDecOp;
 
@@ -57,16 +55,11 @@ struct IncDecOp<language::post_plusplus>
 template <typename IncDecOpT, typename DataT>
 class IncDecExpressionProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
   ASTNodeDataVariant* p_value{nullptr};
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue&)
   {
diff --git a/src/language/node_processor/NameProcessor.hpp b/src/language/node_processor/NameProcessor.hpp
index 9da2b5b49325e07ba155cf04c32a873e606f06a2..1238ca2726876f195693afc63a2446af1f5e33a1 100644
--- a/src/language/node_processor/NameProcessor.hpp
+++ b/src/language/node_processor/NameProcessor.hpp
@@ -3,22 +3,15 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 #include <SymbolTable.hpp>
 
 class NameProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
   ASTNodeDataVariant* p_value{nullptr};
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue&)
   {
diff --git a/src/language/node_processor/OStreamProcessor.hpp b/src/language/node_processor/OStreamProcessor.hpp
index 752b97650a74f40c210ad1e4d9b8e7679495433a..615047e553b9fe105a80c1b84f959aafd4612cb4 100644
--- a/src/language/node_processor/OStreamProcessor.hpp
+++ b/src/language/node_processor/OStreamProcessor.hpp
@@ -3,20 +3,13 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 class OStreamProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
   std::ostream& m_os;
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
diff --git a/src/language/node_processor/UnaryExpressionProcessor.hpp b/src/language/node_processor/UnaryExpressionProcessor.hpp
index 9fe09241109c6fe603fc76b5e42817db9a41a8d2..8f53bd09ea3c8acf42d7007745011edaf9f6817b 100644
--- a/src/language/node_processor/UnaryExpressionProcessor.hpp
+++ b/src/language/node_processor/UnaryExpressionProcessor.hpp
@@ -5,8 +5,6 @@
 
 #include <SymbolTable.hpp>
 
-#include <Demangle.hpp>
-
 template <typename Op>
 struct UnaryOp;
 
@@ -35,6 +33,7 @@ struct UnaryOp<language::unary_not>
 template <typename UnaryOpT, typename ValueT, typename DataT>
 class UnaryExpressionProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
 
   PUGS_INLINE ValueT
@@ -44,12 +43,6 @@ class UnaryExpressionProcessor final : public INodeProcessor
   }
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {
diff --git a/src/language/node_processor/WhileProcessor.hpp b/src/language/node_processor/WhileProcessor.hpp
index ffa877e9ef17d5e733c194bd759f6e874c4b6f56..60e2702f900dfffe84b1bfead3db7afdc4f58096 100644
--- a/src/language/node_processor/WhileProcessor.hpp
+++ b/src/language/node_processor/WhileProcessor.hpp
@@ -3,19 +3,12 @@
 
 #include <node_processor/INodeProcessor.hpp>
 
-#include <Demangle.hpp>
-
 class WhileProcessor final : public INodeProcessor
 {
+ private:
   ASTNode& m_node;
 
  public:
-  std::string
-  describe() const
-  {
-    return demangle<decltype(*this)>();
-  }
-
   void
   execute(ExecUntilBreakOrContinue& exec_policy)
   {