diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/api/encoders/GSATEncoder_GRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/api/encoders/GSATEncoder_GRI.java
index 692aa4f6acf9dbebae875504eaf69006b75803d2..62ad6487e5ddcf06cfbc421b931b35ec686a2784 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/api/encoders/GSATEncoder_GRI.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/api/encoders/GSATEncoder_GRI.java
@@ -1,7 +1,5 @@
 package fr.boreal.explanation.api.encoders;
 
-import fr.boreal.explanation.solving_enumerating.encoders.GSATEncodingResult_GRI;
-
 /**
  * Computes at GSAT encoding of the GRI and the Query for GMUS enumeration
  * @param <DataStructureType> the data structure holding the GRI
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/GSATEncodingResult_GRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/api/encoders/GSATEncodingResult_GRI.java
similarity index 92%
rename from integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/GSATEncodingResult_GRI.java
rename to integraal/integraal-explanation/src/main/java/fr/boreal/explanation/api/encoders/GSATEncodingResult_GRI.java
index 38f279edd4c841ffd74e8f9e39f502406a1d76d0..26a07c1a5fbc3ee1f5e6730f92a1db7afc57465c 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/GSATEncodingResult_GRI.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/api/encoders/GSATEncodingResult_GRI.java
@@ -1,4 +1,4 @@
-package fr.boreal.explanation.solving_enumerating.encoders;
+package fr.boreal.explanation.api.encoders;
 
 import com.google.common.collect.BiMap;
 import fr.boreal.model.logicalElements.api.Atom;
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/FactSupportExplainer.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/FactSupportExplainer.java
deleted file mode 100644
index 04f8f45f859d01c554ae741e930c909acbf804c2..0000000000000000000000000000000000000000
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/FactSupportExplainer.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package fr.boreal.explanation.explainers;
-
-import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
-import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
-import fr.boreal.explanation.solving_enumerating.gmus_processors.FactSupportGMUSProcessor;
-import fr.boreal.model.kb.api.FactBase;
-import fr.boreal.model.kb.api.KnowledgeBase;
-
-/**
- * Computes fact-support explanations for a knowledge base and a ground atomic query
- */
-public class FactSupportExplainer extends AbstractStaticGRIBasedExplainer<FactBase> {
-    public FactSupportExplainer(KnowledgeBase kb) {
-        super(kb);
-    }
-
-    @Override
-    ExplanationProcessor_GRI getGMUSProcessor() {
-        return new FactSupportGMUSProcessor();
-    }
-
-}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/KBSupportExplainer.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/KBSupportExplainer.java
deleted file mode 100644
index 630d578f7da89136a8e0fb7224ead2bcaf35c3ba..0000000000000000000000000000000000000000
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/KBSupportExplainer.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package fr.boreal.explanation.explainers;
-
-import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
-import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
-import fr.boreal.explanation.solving_enumerating.gmus_processors.FactSupportGMUSProcessor;
-import fr.boreal.explanation.solving_enumerating.gmus_processors.KBSupportGMUSProcessor;
-import fr.boreal.model.kb.api.FactBase;
-import fr.boreal.model.kb.api.KnowledgeBase;
-
-/**
- * Computes kb-support explanations for a knowledge base and a ground atomic query
- */
-public class KBSupportExplainer extends AbstractStaticGRIBasedExplainer<KnowledgeBase> {
-    public KBSupportExplainer(KnowledgeBase kb) {
-        super(kb);
-    }
-
-    @Override
-    ExplanationProcessor_GRI getGMUSProcessor() {
-        return new KBSupportGMUSProcessor();
-    }
-
-}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/RuleSupportExplainer.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/RuleSupportExplainer.java
deleted file mode 100644
index db377fa99f38e575987452a4280ea1a21cf7d9d8..0000000000000000000000000000000000000000
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/RuleSupportExplainer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package fr.boreal.explanation.explainers;
-
-import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
-import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
-import fr.boreal.explanation.solving_enumerating.gmus_processors.FactSupportGMUSProcessor;
-import fr.boreal.explanation.solving_enumerating.gmus_processors.RuleSupportGMUSProcessor;
-import fr.boreal.model.kb.api.KnowledgeBase;
-import fr.boreal.model.kb.api.RuleBase;
-
-/**
- * Computes rule-support explanations for a knowledge base and a ground atomic query
- */
-public class RuleSupportExplainer extends AbstractStaticGRIBasedExplainer<RuleBase> {
-
-    public RuleSupportExplainer(KnowledgeBase kb) {
-        super(kb);
-    }
-
-    @Override
-    ExplanationProcessor_GRI getGMUSProcessor() {
-        return new RuleSupportGMUSProcessor();
-    }
-
-}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/AbstractStaticGRIBasedExplainer.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/AbstractStaticGRIBasedExplainer_KBGRI.java
similarity index 91%
rename from integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/AbstractStaticGRIBasedExplainer.java
rename to integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/AbstractStaticGRIBasedExplainer_KBGRI.java
index 139396baeb8ea2fd9a8de8f48c853f159477a90f..149358c33a611ac798aa3758a6ae56e5f0c883d1 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/AbstractStaticGRIBasedExplainer.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/AbstractStaticGRIBasedExplainer_KBGRI.java
@@ -1,4 +1,4 @@
-package fr.boreal.explanation.explainers;
+package fr.boreal.explanation.explainers.kb_gri;
 
 import fr.boreal.explanation.api.explainers.AtomicQueryExplainer;
 import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
@@ -13,7 +13,7 @@ import fr.boreal.model.logicalElements.impl.AtomImpl;
 
 import java.util.Set;
 
-public abstract class AbstractStaticGRIBasedExplainer<ExplanationType> implements AtomicQueryExplainer<ExplanationType> {
+public abstract class AbstractStaticGRIBasedExplainer_KBGRI<ExplanationType> implements AtomicQueryExplainer<ExplanationType> {
 
     private final KnowledgeBase originalRB;
 
@@ -42,7 +42,7 @@ public abstract class AbstractStaticGRIBasedExplainer<ExplanationType> implement
      *
      * @param kb the current kb
      */
-    public AbstractStaticGRIBasedExplainer(KnowledgeBase kb) {
+    public AbstractStaticGRIBasedExplainer_KBGRI(KnowledgeBase kb) {
         this.originalRB = kb;
         this.transformedRB = StaticGRIRuleTransformer.instance().createTransformedRB(kb);
         this.griKB = new KnowledgeBaseImpl(kb.getFactBase(), transformedRB.getStaticRuleBase());
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/FactSupportExplainer_KBGRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/FactSupportExplainer_KBGRI.java
new file mode 100644
index 0000000000000000000000000000000000000000..96cb10e3d73e425467fafed1fc9009f5727d1282
--- /dev/null
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/FactSupportExplainer_KBGRI.java
@@ -0,0 +1,21 @@
+package fr.boreal.explanation.explainers.kb_gri;
+
+import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
+import fr.boreal.explanation.solving_enumerating.kb_gri.processors.FactSupportGMUSProcessor_KBGRI;
+import fr.boreal.model.kb.api.FactBase;
+import fr.boreal.model.kb.api.KnowledgeBase;
+
+/**
+ * Computes fact-support explanations for a knowledge base and a ground atomic query
+ */
+public class FactSupportExplainer_KBGRI extends AbstractStaticGRIBasedExplainer_KBGRI<FactBase> {
+    public FactSupportExplainer_KBGRI(KnowledgeBase kb) {
+        super(kb);
+    }
+
+    @Override
+    ExplanationProcessor_GRI getGMUSProcessor() {
+        return new FactSupportGMUSProcessor_KBGRI();
+    }
+
+}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/FactSupportProvenanceExplainer.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/FactSupportProvenanceExplainer_KBGRI.java
similarity index 72%
rename from integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/FactSupportProvenanceExplainer.java
rename to integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/FactSupportProvenanceExplainer_KBGRI.java
index 8c422cf0cc24cf7d68915e21e7b47a9473f6ee49..d7980ef537865241b81450d392c0c67306f4b822 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/FactSupportProvenanceExplainer.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/FactSupportProvenanceExplainer_KBGRI.java
@@ -1,4 +1,4 @@
-package fr.boreal.explanation.explainers;
+package fr.boreal.explanation.explainers.kb_gri;
 
 import fr.boreal.explanation.api.explainers.AtomicQueryExplainer;
 import fr.boreal.model.kb.api.FactBase;
@@ -9,7 +9,7 @@ import java.util.Set;
 /**
  * Computes fact-support-why-provenance explanations for a knowledge base and a ground atomic query
  */
-public class FactSupportProvenanceExplainer implements AtomicQueryExplainer<FactBase> {
+public class FactSupportProvenanceExplainer_KBGRI implements AtomicQueryExplainer<FactBase> {
     public Set<FactBase> getAllExplanations(Atom query) {
         return Set.of();
     }
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/KBSupportExplainer_KBGRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/KBSupportExplainer_KBGRI.java
new file mode 100644
index 0000000000000000000000000000000000000000..b54e0bf9f02ac3d9278916abdbcd625ab144a8bb
--- /dev/null
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/KBSupportExplainer_KBGRI.java
@@ -0,0 +1,20 @@
+package fr.boreal.explanation.explainers.kb_gri;
+
+import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
+import fr.boreal.explanation.solving_enumerating.kb_gri.processors.KBSupportGMUSProcessor_KBGRI;
+import fr.boreal.model.kb.api.KnowledgeBase;
+
+/**
+ * Computes kb-support explanations for a knowledge base and a ground atomic query
+ */
+public class KBSupportExplainer_KBGRI extends AbstractStaticGRIBasedExplainer_KBGRI<KnowledgeBase> {
+    public KBSupportExplainer_KBGRI(KnowledgeBase kb) {
+        super(kb);
+    }
+
+    @Override
+    ExplanationProcessor_GRI getGMUSProcessor() {
+        return new KBSupportGMUSProcessor_KBGRI();
+    }
+
+}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/RuleSupportExplainer_KBGRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/RuleSupportExplainer_KBGRI.java
new file mode 100644
index 0000000000000000000000000000000000000000..c4d9a0f167c8bcbe392ea9e7a2290acf3f6e555f
--- /dev/null
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/explainers/kb_gri/RuleSupportExplainer_KBGRI.java
@@ -0,0 +1,22 @@
+package fr.boreal.explanation.explainers.kb_gri;
+
+import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
+import fr.boreal.explanation.solving_enumerating.kb_gri.processors.RuleSupportGMUSProcessor_KBGRI;
+import fr.boreal.model.kb.api.KnowledgeBase;
+import fr.boreal.model.kb.api.RuleBase;
+
+/**
+ * Computes rule-support explanations for a knowledge base and a ground atomic query
+ */
+public class RuleSupportExplainer_KBGRI extends AbstractStaticGRIBasedExplainer_KBGRI<RuleBase> {
+
+    public RuleSupportExplainer_KBGRI(KnowledgeBase kb) {
+        super(kb);
+    }
+
+    @Override
+    ExplanationProcessor_GRI getGMUSProcessor() {
+        return new RuleSupportGMUSProcessor_KBGRI();
+    }
+
+}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/FactSupportGMUSProcessor.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/FactSupportGMUSProcessor.java
deleted file mode 100644
index 345271085090eb7e62d1f4202619413fca1af492..0000000000000000000000000000000000000000
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/FactSupportGMUSProcessor.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package fr.boreal.explanation.solving_enumerating.gmus_processors;
-
-import fr.boreal.explanation.api.encoders.GSATEncoder_GRI;
-import fr.boreal.explanation.api.solver.Solver;
-import fr.boreal.explanation.solving_enumerating.encoders.FactSupportKBGSATEncoder;
-import fr.boreal.model.kb.api.FactBase;
-
-import java.util.Set;
-
-public class FactSupportGMUSProcessor extends AbstractSupportGMUSProcessor<FactBase> {
-
-    @Override
-    GSATEncoder_GRI getEncoder() {
-        return new FactSupportKBGSATEncoder();
-    }
-
-    @Override
-    Set<FactBase> translate() {
-        return Set.of();
-        // TODO adapt output translator.translateGMUSes(gmuses, encoding.factIDMap(), encoding.ruleIDMap());
-    }
-
-}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/KBSupportGMUSProcessor.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/KBSupportGMUSProcessor.java
deleted file mode 100644
index b3646f395821c7f0d53f1f6eeaa5ddde43a77eff..0000000000000000000000000000000000000000
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/KBSupportGMUSProcessor.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package fr.boreal.explanation.solving_enumerating.gmus_processors;
-
-import fr.boreal.explanation.api.encoders.GSATEncoder_GRI;
-import fr.boreal.explanation.solving_enumerating.encoders.KBSupportKBGSATEncoder;
-import fr.boreal.model.kb.api.KnowledgeBase;
-
-import java.util.Set;
-
-public class KBSupportGMUSProcessor extends  AbstractSupportGMUSProcessor<KnowledgeBase>  {
-
-    @Override
-    GSATEncoder_GRI getEncoder() {
-        return new KBSupportKBGSATEncoder();
-    }
-
-    @Override
-    Set<KnowledgeBase> translate() {
-        return translator.translateGMUSes(gmuses, encoding.factIDMap(), encoding.ruleIDMap());
-    }
-
-}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/RuleSupportGMUSProcessor.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/RuleSupportGMUSProcessor.java
deleted file mode 100644
index 28127eaf2e802d2b5b16b7254d62eaea9167e767..0000000000000000000000000000000000000000
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/RuleSupportGMUSProcessor.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package fr.boreal.explanation.solving_enumerating.gmus_processors;
-
-import fr.boreal.explanation.api.encoders.GSATEncoder_GRI;
-import fr.boreal.explanation.solving_enumerating.encoders.RuleSupportKBGSATEncoder;
-import fr.boreal.model.kb.api.FactBase;
-
-import java.util.Set;
-
-public class RuleSupportGMUSProcessor extends AbstractSupportGMUSProcessor<FactBase> {
-
-    @Override
-    GSATEncoder_GRI getEncoder() {
-        return new RuleSupportKBGSATEncoder();
-    }
-
-    @Override
-    Set<FactBase> translate() {
-        return Set.of();
-        // TODO adapt output translator.translateGMUSes(gmuses, encoding.factIDMap(), encoding.ruleIDMap());
-    }
-
-
-}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/sat4j/FactSupportMUSSat4JProcessor.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/sat4j/FactSupportMUSSat4JProcessor.java
index 3540084fedced43b91cfe0be613415734f6d32ed..e95ec2e688de73364ddbe554f269372c9e9a8356 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/sat4j/FactSupportMUSSat4JProcessor.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/sat4j/FactSupportMUSSat4JProcessor.java
@@ -1,8 +1,7 @@
 package fr.boreal.explanation.solving_enumerating.gmus_processors.sat4j;
 
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
-import fr.boreal.explanation.solving_enumerating.encoders.FactSupportKBGSATEncoder;
-import fr.boreal.model.kb.api.FactBase;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.FactSupportGSATEncoder_KBGRI;
 import fr.boreal.model.kb.api.KnowledgeBase;
 import fr.boreal.model.logicalElements.api.Atom;
 
@@ -17,7 +16,7 @@ public class FactSupportMUSSat4JProcessor {
             StaticGRIRuleTransformer staticGRIRuleTransformer,
             Atom query) {
 
-        FactSupportKBGSATEncoder encoder = new FactSupportKBGSATEncoder();
+        FactSupportGSATEncoder_KBGRI encoder = new FactSupportGSATEncoder_KBGRI();
         var encoding = encoder.encode(filteredGRI, query);
         var gmuses = Sat4JSolver.enumerateGMUSes(encoding.clauses());
 
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/AbstractGSATEncoderGRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/AbstractGSATEncoder_KBGRI.java
similarity index 96%
rename from integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/AbstractGSATEncoderGRI.java
rename to integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/AbstractGSATEncoder_KBGRI.java
index b9ed1393863738eea7ee1853fcdc93dda87d8a6a..24703e77a6a1bd1b289380c75e6b6da19b47972e 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/AbstractGSATEncoderGRI.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/AbstractGSATEncoder_KBGRI.java
@@ -1,8 +1,9 @@
-package fr.boreal.explanation.solving_enumerating.encoders;
+package fr.boreal.explanation.solving_enumerating.kb_gri.encoders;
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
 import fr.boreal.explanation.api.encoders.GSATEncoder_GRI;
+import fr.boreal.explanation.api.encoders.GSATEncodingResult_GRI;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
 import fr.boreal.model.kb.api.FactBase;
 import fr.boreal.model.kb.api.KnowledgeBase;
@@ -40,7 +41,7 @@ import java.util.Set;
  * 1. factIDmap (nbGroup - atom)
  * 2. ruleIDmap (nbGroup - ungrounded rule)
  */
-public abstract class AbstractGSATEncoderGRI implements GSATEncoder_GRI<KnowledgeBase, Atom> {
+public abstract class AbstractGSATEncoder_KBGRI implements GSATEncoder_GRI<KnowledgeBase, Atom> {
 
     StaticGRIRuleTransformer staticGRIRuleTransformer = StaticGRIRuleTransformer.instance();
     Predicate REL = StaticGRIRuleTransformer.REL;
@@ -50,7 +51,7 @@ public abstract class AbstractGSATEncoderGRI implements GSATEncoder_GRI<Knowledg
     public List<List<Integer>> clauses = new ArrayList<>();
     protected int nbGroup;
 
-    public AbstractGSATEncoderGRI() {
+    public AbstractGSATEncoder_KBGRI() {
         this.nbGroup = getStartingGroupNumber();
     }
 
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/FactSupportKBGSATEncoder.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/FactSupportGSATEncoder_KBGRI.java
similarity index 88%
rename from integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/FactSupportKBGSATEncoder.java
rename to integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/FactSupportGSATEncoder_KBGRI.java
index 5a115bcc713107cd01713a82968a59d73f9cdad9..036498a6e53dd6491820e7f9267f7d9b09788cf3 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/FactSupportKBGSATEncoder.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/FactSupportGSATEncoder_KBGRI.java
@@ -1,10 +1,10 @@
-package fr.boreal.explanation.solving_enumerating.encoders;
+package fr.boreal.explanation.solving_enumerating.kb_gri.encoders;
 
-import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
+import fr.boreal.explanation.api.encoders.GSATEncodingResult_GRI;
 import fr.boreal.model.kb.api.KnowledgeBase;
 import fr.boreal.model.logicalElements.api.Atom;
 
-public class FactSupportKBGSATEncoder extends AbstractGSATEncoderGRI {
+public class FactSupportGSATEncoder_KBGRI extends AbstractGSATEncoder_KBGRI {
 
     @Override
     int getStartingGroupNumber() {
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/KBSupportKBGSATEncoder.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/KBSupportKBGSATEncoder_KBGRI.java
similarity index 83%
rename from integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/KBSupportKBGSATEncoder.java
rename to integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/KBSupportKBGSATEncoder_KBGRI.java
index e3edc8d3829ded4314ffa0562bd935dd2e7d99c2..cc0005ddbeff475687977e662968a9a85e417374 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/KBSupportKBGSATEncoder.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/KBSupportKBGSATEncoder_KBGRI.java
@@ -1,10 +1,6 @@
-package fr.boreal.explanation.solving_enumerating.encoders;
+package fr.boreal.explanation.solving_enumerating.kb_gri.encoders;
 
-import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
-import fr.boreal.model.kb.api.KnowledgeBase;
-import fr.boreal.model.logicalElements.api.Atom;
-
-public class KBSupportKBGSATEncoder extends AbstractGSATEncoderGRI {
+public class KBSupportKBGSATEncoder_KBGRI extends AbstractGSATEncoder_KBGRI {
 
     int getStartingGroupNumber() {
         return 0;
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/RuleSupportKBGSATEncoder.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/RuleSupportKBGSATEncoder_KBGRI.java
similarity index 87%
rename from integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/RuleSupportKBGSATEncoder.java
rename to integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/RuleSupportKBGSATEncoder_KBGRI.java
index e01165da7b4c752b5b938de50c782f6a33d4cc2d..c7e9042eb29ab79ad3875fc51c51278dd8b44c9d 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/encoders/RuleSupportKBGSATEncoder.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/encoders/RuleSupportKBGSATEncoder_KBGRI.java
@@ -1,8 +1,6 @@
-package fr.boreal.explanation.solving_enumerating.encoders;
+package fr.boreal.explanation.solving_enumerating.kb_gri.encoders;
 
-import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
-
-public class RuleSupportKBGSATEncoder extends AbstractGSATEncoderGRI {
+public class RuleSupportKBGSATEncoder_KBGRI extends AbstractGSATEncoder_KBGRI {
 
     int getStartingGroupNumber() {
         return 2;
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/AbstractSupportGMUSProcessor.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/AbstractExplanationsProcessor_GMUS_KBGRI.java
similarity index 81%
rename from integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/AbstractSupportGMUSProcessor.java
rename to integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/AbstractExplanationsProcessor_GMUS_KBGRI.java
index 0b676ad16565024617ed2f7b5d57b5fd90cba422..66bc91668c3e154beb15f490d968c3d60b80482b 100644
--- a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/gmus_processors/AbstractSupportGMUSProcessor.java
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/AbstractExplanationsProcessor_GMUS_KBGRI.java
@@ -1,27 +1,27 @@
-package fr.boreal.explanation.solving_enumerating.gmus_processors;
+package fr.boreal.explanation.solving_enumerating.kb_gri.processors;
 
 import fr.boreal.explanation.api.encoders.GSATEncoder_GRI;
 import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
 import fr.boreal.explanation.api.solver.Solver;
 import fr.boreal.explanation.solving_enumerating.GMUSSolverMARCO;
 import fr.boreal.explanation.solving_enumerating.GMUSTranslatorImpl;
-import fr.boreal.explanation.solving_enumerating.encoders.GSATEncodingResult_GRI;
+import fr.boreal.explanation.api.encoders.GSATEncodingResult_GRI;
 import fr.boreal.model.kb.api.KnowledgeBase;
 import fr.boreal.model.logicalElements.api.Atom;
 
 import java.util.Set;
 
-public abstract class AbstractSupportGMUSProcessor<ExplanationType> implements ExplanationProcessor_GRI<ExplanationType, KnowledgeBase, Atom> {
+public abstract class AbstractExplanationsProcessor_GMUS_KBGRI<ExplanationType> implements ExplanationProcessor_GRI<ExplanationType, KnowledgeBase, Atom> {
 
     protected static Solver solver = new GMUSSolverMARCO();
     protected static final GMUSTranslatorImpl translator = new GMUSTranslatorImpl();
     protected GSATEncodingResult_GRI encoding;
     protected Set<String> gmuses;
 
-    AbstractSupportGMUSProcessor() {
+    AbstractExplanationsProcessor_GMUS_KBGRI() {
     }
 
-    AbstractSupportGMUSProcessor(Solver solver) {
+    AbstractExplanationsProcessor_GMUS_KBGRI(Solver solver) {
         this.solver = solver;
     }
 
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/FactSupportGMUSProcessor_KBGRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/FactSupportGMUSProcessor_KBGRI.java
new file mode 100644
index 0000000000000000000000000000000000000000..b1e26ed932ad783ffc414edca1374c20ec468760
--- /dev/null
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/FactSupportGMUSProcessor_KBGRI.java
@@ -0,0 +1,24 @@
+package fr.boreal.explanation.solving_enumerating.kb_gri.processors;
+
+import fr.boreal.explanation.api.encoders.GSATEncoder_GRI;
+import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.FactSupportGSATEncoder_KBGRI;
+import fr.boreal.model.kb.api.FactBase;
+import fr.boreal.model.kb.api.KnowledgeBase;
+import fr.boreal.model.logicalElements.api.Atom;
+import java.util.Set;
+
+public class FactSupportGMUSProcessor_KBGRI extends AbstractExplanationsProcessor_GMUS_KBGRI<FactBase> implements ExplanationProcessor_GRI<FactBase, KnowledgeBase, Atom> {
+
+    @Override
+    GSATEncoder_GRI getEncoder() {
+        return new FactSupportGSATEncoder_KBGRI();
+    }
+
+    @Override
+    Set<FactBase> translate() {
+        return Set.of();
+        // TODO adapt output translator.translateGMUSes(gmuses, encoding.factIDMap(), encoding.ruleIDMap());
+    }
+
+}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/KBSupportGMUSProcessor_KBGRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/KBSupportGMUSProcessor_KBGRI.java
new file mode 100644
index 0000000000000000000000000000000000000000..e2b0854199a40108a922d4caf799d75f66242ce1
--- /dev/null
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/KBSupportGMUSProcessor_KBGRI.java
@@ -0,0 +1,23 @@
+package fr.boreal.explanation.solving_enumerating.kb_gri.processors;
+
+import fr.boreal.explanation.api.encoders.GSATEncoder_GRI;
+import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.KBSupportKBGSATEncoder_KBGRI;
+import fr.boreal.model.kb.api.KnowledgeBase;
+import fr.boreal.model.logicalElements.api.Atom;
+
+import java.util.Set;
+
+public class KBSupportGMUSProcessor_KBGRI extends AbstractExplanationsProcessor_GMUS_KBGRI<KnowledgeBase> implements ExplanationProcessor_GRI<KnowledgeBase, KnowledgeBase, Atom>  {
+
+    @Override
+    GSATEncoder_GRI getEncoder() {
+        return new KBSupportKBGSATEncoder_KBGRI();
+    }
+
+    @Override
+    Set<KnowledgeBase> translate() {
+        return translator.translateGMUSes(gmuses, encoding.factIDMap(), encoding.ruleIDMap());
+    }
+
+}
diff --git a/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/RuleSupportGMUSProcessor_KBGRI.java b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/RuleSupportGMUSProcessor_KBGRI.java
new file mode 100644
index 0000000000000000000000000000000000000000..4488c1ae8ce50ec121ed8daccd43f062691c83da
--- /dev/null
+++ b/integraal/integraal-explanation/src/main/java/fr/boreal/explanation/solving_enumerating/kb_gri/processors/RuleSupportGMUSProcessor_KBGRI.java
@@ -0,0 +1,26 @@
+package fr.boreal.explanation.solving_enumerating.kb_gri.processors;
+
+import fr.boreal.explanation.api.encoders.GSATEncoder_GRI;
+import fr.boreal.explanation.api.processors.ExplanationProcessor_GRI;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.RuleSupportKBGSATEncoder_KBGRI;
+import fr.boreal.model.kb.api.KnowledgeBase;
+import fr.boreal.model.kb.api.RuleBase;
+import fr.boreal.model.logicalElements.api.Atom;
+
+import java.util.Set;
+
+public class RuleSupportGMUSProcessor_KBGRI extends AbstractExplanationsProcessor_GMUS_KBGRI<RuleBase> implements ExplanationProcessor_GRI<RuleBase, KnowledgeBase, Atom> {
+
+    @Override
+    GSATEncoder_GRI getEncoder() {
+        return new RuleSupportKBGSATEncoder_KBGRI();
+    }
+
+    @Override
+    Set<RuleBase> translate() {
+        return Set.of();
+        // TODO adapt output translator.translateGMUSes(gmuses, encoding.factIDMap(), encoding.ruleIDMap());
+    }
+
+
+}
diff --git a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/FactSupportExplainerTest.java b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/FactSupportExplainerTest.java
index 1eb6ecf7e202816cc839871c87742829380b8481..af9b168884ff83f95fff23ea9510abec8bb4d46e 100644
--- a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/FactSupportExplainerTest.java
+++ b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/FactSupportExplainerTest.java
@@ -1,6 +1,6 @@
 package fr.boreal.test.explanation.explainer;
 
-import fr.boreal.explanation.explainers.FactSupportExplainer;
+import fr.boreal.explanation.explainers.kb_gri.FactSupportExplainer_KBGRI;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
 import fr.boreal.model.kb.api.FactBase;
 import fr.boreal.model.kb.api.KnowledgeBase;
@@ -19,7 +19,7 @@ import java.util.List;
 import java.util.Set;
 
 public class FactSupportExplainerTest {
-    FactSupportExplainer explainer;
+    FactSupportExplainer_KBGRI explainer;
     StaticGRIRuleTransformer staticGRIRuleTransformer = StaticGRIRuleTransformer.instance();
 
     Predicate REL = staticGRIRuleTransformer.REL;
@@ -36,7 +36,7 @@ public class FactSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6,TestData.r7));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new FactSupportExplainer(kb);
+        explainer = new FactSupportExplainer_KBGRI(kb);
         Set<FactBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase1 = new SimpleInMemoryGraphStore(Set.of(TestData.saa));
@@ -60,7 +60,7 @@ public class FactSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6, TestData.r7, TestData.r8));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new FactSupportExplainer(kb);
+        explainer = new FactSupportExplainer_KBGRI(kb);
         Set<FactBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore(Set.of(TestData.saa, TestData.sbc, TestData.tab));
@@ -80,7 +80,7 @@ public class FactSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6, TestData.r7, TestData.r8));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new FactSupportExplainer(kb);
+        explainer = new FactSupportExplainer_KBGRI(kb);
         Set<FactBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore(Set.of(TestData.saa, TestData.sbc, TestData.tab));
@@ -101,7 +101,7 @@ public class FactSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1, TestData.r4));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new FactSupportExplainer(kb);
+        explainer = new FactSupportExplainer_KBGRI(kb);
         Set<FactBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore(Set.of(TestData.pa));
diff --git a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/KBSupportExplainerTest.java b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/KBSupportExplainerTest.java
index 037479564763b428fd3b4a0682ca14f4afc7b61a..c21c02291a52043583b53132d85ef6cc2df427aa 100644
--- a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/KBSupportExplainerTest.java
+++ b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/KBSupportExplainerTest.java
@@ -1,6 +1,6 @@
 package fr.boreal.test.explanation.explainer;
 
-import fr.boreal.explanation.explainers.KBSupportExplainer;
+import fr.boreal.explanation.explainers.kb_gri.KBSupportExplainer_KBGRI;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
 import fr.boreal.model.kb.api.FactBase;
 import fr.boreal.model.kb.api.KnowledgeBase;
@@ -19,7 +19,7 @@ import java.util.List;
 import java.util.Set;
 
 public class KBSupportExplainerTest {
-    KBSupportExplainer explainer;
+    KBSupportExplainer_KBGRI explainer;
     StaticGRIRuleTransformer staticGRIRuleTransformer = StaticGRIRuleTransformer.instance();
 
     Predicate REL = staticGRIRuleTransformer.REL;
@@ -36,7 +36,7 @@ public class KBSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1,TestData.r9));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new KBSupportExplainer(kb);
+        explainer = new KBSupportExplainer_KBGRI(kb);
         Set<KnowledgeBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase1 = new SimpleInMemoryGraphStore(Set.of(TestData.pa));
@@ -57,7 +57,7 @@ public class KBSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6,TestData.r7));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new KBSupportExplainer(kb);
+        explainer = new KBSupportExplainer_KBGRI(kb);
         Set<KnowledgeBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase1 = new SimpleInMemoryGraphStore(Set.of(TestData.saa));
@@ -86,7 +86,7 @@ public class KBSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6, TestData.r7, TestData.r8));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new KBSupportExplainer(kb);
+        explainer = new KBSupportExplainer_KBGRI(kb);
         Set<KnowledgeBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore(Set.of(TestData.saa, TestData.sbc, TestData.tab));
@@ -106,7 +106,7 @@ public class KBSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6, TestData.r7, TestData.r8));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new KBSupportExplainer(kb);
+        explainer = new KBSupportExplainer_KBGRI(kb);
         Set<KnowledgeBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore(Set.of(TestData.saa, TestData.sbc, TestData.tab));
@@ -127,7 +127,7 @@ public class KBSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1, TestData.r4));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new KBSupportExplainer(kb);
+        explainer = new KBSupportExplainer_KBGRI(kb);
         Set<KnowledgeBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore(Set.of(TestData.pa));
diff --git a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/RuleSupportExplainerTest.java b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/RuleSupportExplainerTest.java
index c0e33070eb3da749eb152cc9cc9cb12de21372d9..457e16befb84f09704e9a79f04e667d167ffa9f6 100644
--- a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/RuleSupportExplainerTest.java
+++ b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/explainer/RuleSupportExplainerTest.java
@@ -1,6 +1,6 @@
 package fr.boreal.test.explanation.explainer;
 
-import fr.boreal.explanation.explainers.RuleSupportExplainer;
+import fr.boreal.explanation.explainers.kb_gri.RuleSupportExplainer_KBGRI;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
 import fr.boreal.model.kb.api.FactBase;
 import fr.boreal.model.kb.api.KnowledgeBase;
@@ -19,7 +19,7 @@ import java.util.List;
 import java.util.Set;
 
 public class RuleSupportExplainerTest {
-    RuleSupportExplainer explainer;
+    RuleSupportExplainer_KBGRI explainer;
     StaticGRIRuleTransformer staticGRIRuleTransformer = StaticGRIRuleTransformer.instance();
 
     Predicate REL = staticGRIRuleTransformer.REL;
@@ -36,7 +36,7 @@ public class RuleSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6,TestData.r7));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new RuleSupportExplainer(kb);
+        explainer = new RuleSupportExplainer_KBGRI(kb);
         Set<RuleBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase2 = new SimpleInMemoryGraphStore();
@@ -60,7 +60,7 @@ public class RuleSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6, TestData.r7, TestData.r8));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new RuleSupportExplainer(kb);
+        explainer = new RuleSupportExplainer_KBGRI(kb);
         Set<RuleBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore();
@@ -80,7 +80,7 @@ public class RuleSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r6, TestData.r7, TestData.r8));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new RuleSupportExplainer(kb);
+        explainer = new RuleSupportExplainer_KBGRI(kb);
         Set<RuleBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore();
@@ -101,7 +101,7 @@ public class RuleSupportExplainerTest {
         RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1, TestData.r4));
         KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
 
-        explainer = new RuleSupportExplainer(kb);
+        explainer = new RuleSupportExplainer_KBGRI(kb);
         Set<RuleBase> explanations = explainer.getAllExplanations(query);
 
         FactBase expectedFactBase = new SimpleInMemoryGraphStore();
diff --git a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/FactSupportKBGSATEncoderTest.java b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/FactSupportKBGSATEncoderTest.java
index 4b3f59625f87d2e3942265a2663486262ac4f829..a8a1407490d44b59500c19b74e6a08df22af2c06 100644
--- a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/FactSupportKBGSATEncoderTest.java
+++ b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/FactSupportKBGSATEncoderTest.java
@@ -2,7 +2,7 @@ package fr.boreal.test.explanation.solvingViaGMUS;
 
 import fr.boreal.explanation.GRI.dynamicProcessing.RELTracer;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
-import fr.boreal.explanation.solving_enumerating.encoders.FactSupportKBGSATEncoder;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.FactSupportGSATEncoder_KBGRI;
 import fr.boreal.model.kb.api.FactBase;
 import fr.boreal.model.kb.api.KnowledgeBase;
 import fr.boreal.model.kb.api.RuleBase;
@@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test;
 import java.util.List;
 
 public class FactSupportKBGSATEncoderTest {
-    FactSupportKBGSATEncoder encoder;
+    FactSupportGSATEncoder_KBGRI encoder;
     StaticGRIRuleTransformer staticGRIRuleTransformer;
 
     Predicate REL = StaticGRIRuleTransformer.REL;
@@ -29,7 +29,7 @@ public class FactSupportKBGSATEncoderTest {
     @BeforeEach
     public void setUp() {
         staticGRIRuleTransformer = new StaticGRIRuleTransformer();
-        encoder = new FactSupportKBGSATEncoder();
+        encoder = new FactSupportGSATEncoder_KBGRI();
     }
     @Test
     public void startQueryTest() {
diff --git a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/GMUSSolverTest.java b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/GMUSSolverTest.java
index 4df4efee9d7d4d426ae0b3856ecbb3a4c81821b2..8cf7e7747f0cc036d1d7d49e07cba3d6bbb75079 100644
--- a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/GMUSSolverTest.java
+++ b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/GMUSSolverTest.java
@@ -1,7 +1,7 @@
 package fr.boreal.test.explanation.solvingViaGMUS;
 
 import fr.boreal.explanation.GRI.dynamicProcessing.RELTracer;
-import fr.boreal.explanation.solving_enumerating.encoders.KBSupportKBGSATEncoder;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.KBSupportKBGSATEncoder_KBGRI;
 import fr.boreal.explanation.solving_enumerating.GMUSSolverMARCO;
 import fr.boreal.explanation.solving_enumerating.GMUSTranslatorImpl;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
@@ -22,7 +22,7 @@ import java.util.List;
 import java.util.Set;
 
 public class GMUSSolverTest {
-    KBSupportKBGSATEncoder gmusProcessor;
+    KBSupportKBGSATEncoder_KBGRI gmusProcessor;
     GMUSTranslatorImpl gmusTranslator;
     GMUSSolverMARCO gmusSolver;
     StaticGRIRuleTransformer staticGRIRuleTransformer;
@@ -32,7 +32,7 @@ public class GMUSSolverTest {
     @BeforeEach
     public void setUp() {
         staticGRIRuleTransformer = new StaticGRIRuleTransformer();
-        gmusProcessor = new KBSupportKBGSATEncoder();
+        gmusProcessor = new KBSupportKBGSATEncoder_KBGRI();
         gmusTranslator = new GMUSTranslatorImpl();
         gmusSolver = new GMUSSolverMARCO();
     }
diff --git a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/GMUSTranslatorTest.java b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/GMUSTranslatorTest.java
index 72f7c4a62b56ae99a4c6e1105f6d48af48521160..966a1ade958132a19cca9e464e26f547dc5ced01 100644
--- a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/GMUSTranslatorTest.java
+++ b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/GMUSTranslatorTest.java
@@ -1,7 +1,7 @@
 package fr.boreal.test.explanation.solvingViaGMUS;
 
 import fr.boreal.explanation.GRI.dynamicProcessing.RELTracer;
-import fr.boreal.explanation.solving_enumerating.encoders.KBSupportKBGSATEncoder;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.KBSupportKBGSATEncoder_KBGRI;
 import fr.boreal.explanation.solving_enumerating.GMUSTranslatorImpl;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
 import fr.boreal.model.kb.api.FactBase;
@@ -22,7 +22,7 @@ import org.junit.jupiter.api.Test;
 import java.util.List;
 
 public class GMUSTranslatorTest {
-    KBSupportKBGSATEncoder gmusProcessor;
+    KBSupportKBGSATEncoder_KBGRI gmusProcessor;
     GMUSTranslatorImpl gmusTranslator;
     StaticGRIRuleTransformer staticGRIRuleTransformer;
 
@@ -31,7 +31,7 @@ public class GMUSTranslatorTest {
     @BeforeEach
     public void setUp() {
         this.staticGRIRuleTransformer = new StaticGRIRuleTransformer();
-        gmusProcessor = new KBSupportKBGSATEncoder();
+        gmusProcessor = new KBSupportKBGSATEncoder_KBGRI();
         gmusTranslator = new GMUSTranslatorImpl();
     }
 
diff --git a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/KBSupportKBGSATEncoderTest.java b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/KBSupportKBGSATEncoderTest.java
index 59aca5b0e0211a50a9bdcebb435c6736582fef9d..eaf425dffe66c931dc94479184e3aacbfd488c98 100644
--- a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/KBSupportKBGSATEncoderTest.java
+++ b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/KBSupportKBGSATEncoderTest.java
@@ -1,7 +1,7 @@
 package fr.boreal.test.explanation.solvingViaGMUS;
 
 import fr.boreal.explanation.GRI.dynamicProcessing.RELTracer;
-import fr.boreal.explanation.solving_enumerating.encoders.KBSupportKBGSATEncoder;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.KBSupportKBGSATEncoder_KBGRI;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
 import fr.boreal.model.kb.api.FactBase;
 import fr.boreal.model.kb.api.KnowledgeBase;
@@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test;
 import java.util.List;
 
 public class KBSupportKBGSATEncoderTest {
-    KBSupportKBGSATEncoder kBtoGSATEncoder;
+    KBSupportKBGSATEncoder_KBGRI kBtoGSATEncoder;
     StaticGRIRuleTransformer staticGRIRuleTransformer;
 
     Predicate REL = staticGRIRuleTransformer.REL;
@@ -29,7 +29,7 @@ public class KBSupportKBGSATEncoderTest {
     @BeforeEach
     public void setUp() {
         staticGRIRuleTransformer = new StaticGRIRuleTransformer();
-        kBtoGSATEncoder = new KBSupportKBGSATEncoder();
+        kBtoGSATEncoder = new KBSupportKBGSATEncoder_KBGRI();
     }
     @Test
     public void startQueryTest() {
diff --git a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/sat4j/MUSSat4JSolverTest.java b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/sat4j/MUSSat4JSolverTest.java
index d0f31550ffcb99d1fa67a9617e709fcdeb5f5cc4..0634b2fcb948d194a56856527b5eddae1a433708 100644
--- a/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/sat4j/MUSSat4JSolverTest.java
+++ b/integraal/integraal-explanation/src/test/java/fr/boreal/test/explanation/solvingViaGMUS/sat4j/MUSSat4JSolverTest.java
@@ -2,8 +2,8 @@ package fr.boreal.test.explanation.solvingViaGMUS.sat4j;
 
 import fr.boreal.explanation.GRI.dynamicProcessing.RELTracer;
 import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
-import fr.boreal.explanation.solving_enumerating.encoders.FactSupportKBGSATEncoder;
-import fr.boreal.explanation.solving_enumerating.encoders.KBSupportKBGSATEncoder;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.FactSupportGSATEncoder_KBGRI;
+import fr.boreal.explanation.solving_enumerating.kb_gri.encoders.KBSupportKBGSATEncoder_KBGRI;
 import fr.boreal.explanation.solving_enumerating.gmus_processors.sat4j.Sat4JSolver;
 import fr.boreal.model.kb.api.FactBase;
 import fr.boreal.model.kb.api.KnowledgeBase;
@@ -73,7 +73,7 @@ public class MUSSat4JSolverTest {
 
     @Test
     public void gmusToFactSupportExplTest() {
-        FactSupportKBGSATEncoder gmusProcessor = new FactSupportKBGSATEncoder();
+        FactSupportGSATEncoder_KBGRI gmusProcessor = new FactSupportGSATEncoder_KBGRI();
         Atom query = TestData.qa;
 
         FactBase factBase = new SimpleInMemoryGraphStore(List.of(TestData.pa, TestData.ta));
@@ -96,7 +96,7 @@ public class MUSSat4JSolverTest {
 
     @Test
     public void gmusToKBSupportExplTest() {
-        KBSupportKBGSATEncoder encoder = new KBSupportKBGSATEncoder();
+        KBSupportKBGSATEncoder_KBGRI encoder = new KBSupportKBGSATEncoder_KBGRI();
         Atom query = TestData.qa;
 
         FactBase factBase = new SimpleInMemoryGraphStore(List.of(TestData.pa, TestData.ta));