diff --git a/capectracer/capec_tracer.py b/capectracer/capec_tracer.py
index e3fe86d2a12d58c43bc2a267c9be5c7cee5124a8..45b37213ef870d2e879c76c2502838cfba1c8894 100644
--- a/capectracer/capec_tracer.py
+++ b/capectracer/capec_tracer.py
@@ -3,6 +3,8 @@ import os
 import torch
 import decimal
 import argparse
+import time
+from datetime import datetime
 
 from capec_dict import CapecDict
 
@@ -109,6 +111,22 @@ def provide_mitigations(abs_path):
                     if mitigation not in already_printed_mitis:
                         output.write(f'{mitigation}\n\n')
                         already_printed_mitis.append(mitigation)
+                        
+def is_file_downloaded_today(abs_path):
+    file_path = abs_path + "capec_latest.xml"
+    
+    if not os.path.isfile(file_path):
+        return False  # The file doesn't exist
+
+    # Get the last modified time of the file
+    last_modified_time = os.path.getmtime(file_path)
+    last_modified_date = datetime.fromtimestamp(last_modified_time).date()
+
+    # Get today's date
+    today = datetime.now().date()
+
+    # Compare the two dates
+    return last_modified_date == today
 
 if __name__ == "__main__": 
     parser = argparse.ArgumentParser(description='Provides a list of most related CAPECs to a provided input.')
@@ -120,9 +138,12 @@ if __name__ == "__main__":
     abs_path = abs_path[:last_slash_index + 1]
 
     try:
-        response = get_capec_file(abs_path)
+        downloaded_capecs = is_file_downloaded_today(abs_path)
+
+        if not downloaded_capecs:
+            response = get_capec_file(abs_path)
 
-        if response.status_code == 200:
+        if downloaded_capecs or response.status_code == 200:
             if args.mitigations:
                 provide_mitigations(abs_path)
             else:
diff --git a/src/main/java/ai/AIAPTMitigations.java b/src/main/java/ai/AIAPTMitigations.java
index 0a5d35d92d77a8e20e63c724839d2a1f9bef1f24..e9cc90f8c58ed16bf9f99fda2851fe22c6f9704c 100644
--- a/src/main/java/ai/AIAPTMitigations.java
+++ b/src/main/java/ai/AIAPTMitigations.java
@@ -79,13 +79,13 @@ public class AIAPTMitigations extends AIInteract {
         }
 
         if (attackSteps != null && attackSteps.length > 0) {
-            String attackStepsString = buildDelimAttSteps(attackSteps);
+            String attackStepsString = buildDelimStringFromMatrix(attackSteps);
             TraceManager.addDev("\nKnowledge added: " + attackStepsString);
             chatData.aiinterface.addKnowledge("The attack steps are: " + attackStepsString, "ok");
         }
 
         if (counters != null && counters.length > 0) {
-            String countersString = buildDelimString(counters);
+            String countersString = buildDelimStringFromArray(counters);
             TraceManager.addDev("\nKnowledge added: " + countersString);
             chatData.aiinterface.addKnowledge("The possible counters are: " + countersString, "ok");
         }
@@ -180,7 +180,7 @@ public class AIAPTMitigations extends AIInteract {
         }
     }
 
-    private String buildDelimString(String[] list) {
+    private String buildDelimStringFromArray(String[] list) {
         StringBuilder builder = new StringBuilder();
 
         for (int i = 0; i <= list.length - 1; i++) {
@@ -195,7 +195,7 @@ public class AIAPTMitigations extends AIInteract {
         return builder.toString();
     }
 
-    private String buildDelimAttSteps(String[][] list) {
+    private String buildDelimStringFromMatrix(String[][] list) {
         StringBuilder builder = new StringBuilder();
 
         for (int i = 0; i <= list.length - 1; i++) {
diff --git a/src/main/java/avatartranslator/AvatarCompactDependencyGraph.java b/src/main/java/avatartranslator/AvatarCompactDependencyGraph.java
index c80012f09602750d7fb88b91f310300e4bac887a..58817d15a8cec36acf50ee0cb7dd5808ea346f30 100644
--- a/src/main/java/avatartranslator/AvatarCompactDependencyGraph.java
+++ b/src/main/java/avatartranslator/AvatarCompactDependencyGraph.java
@@ -530,7 +530,7 @@ public class AvatarCompactDependencyGraph {
 
         if (_elt instanceof AvatarTransition) {
             AvatarTransition at = (AvatarTransition) _elt;
-            if (at.isEmpty()) {
+            if (at.isEmpty() && !at.isGuarded()) {
                 if (_elt.getNext(0) != null) {
                     return makeCompactDependencyGraphForAvatarElement(bl, _elt.getNext(0), _previousS, _elt, _states, _transitions, withID,
                             null);
@@ -777,6 +777,8 @@ public class AvatarCompactDependencyGraph {
             }
         }
 
+        AvatarSpecification oldSpec = null;
+
         // We make the relations between blocks
         for (AUTState st : graph.getStates()) {
             if (st.getNbInTransitions() == 0) {
@@ -790,7 +792,7 @@ public class AvatarCompactDependencyGraph {
                         AvatarBlock newBlock = newAvspec.getBlockWithName(ab.getName());
                         if (newBlock != null) {
                             // We add relations for which the two related blocks have been defined
-                            AvatarSpecification oldSpec = asmo.getAvatarSpecification();
+                            oldSpec = asmo.getAvatarSpecification();
                             if (oldSpec != null) {
                                 for (AvatarRelation ar: oldSpec.getRelations()) {
                                     boolean b1 = ar.getBlock1().getName().compareTo(newBlock.getName()) == 0;
@@ -826,6 +828,13 @@ public class AvatarCompactDependencyGraph {
             }
         }
 
+        // We clone the datatypes
+        if (!oldSpec.getDataTypes().isEmpty()) {
+            for (AvatarDataType adt : oldSpec.getDataTypes()) {
+                newAvspec.addDataType(adt.advancedClone());
+            }
+        }
+
 
         // We make the state machines
         for (AUTState st : graph.getStates()) {
diff --git a/src/main/java/cli/Action.java b/src/main/java/cli/Action.java
index 275cda3c7c0994393184df39e2c602aa5f05bc5d..e460bea6639a059c5b0d2613d2c63a6c14e36972 100644
--- a/src/main/java/cli/Action.java
+++ b/src/main/java/cli/Action.java
@@ -1658,7 +1658,10 @@ public class Action extends Command implements ProVerifOutputListener {
                 interpreter.mgui.addRG(rg);
 
                 // 3. Generate new Avatar spec
+                acdgReduced.setGraph(result);
                 as = acdgReduced.makeAvatarSpecification();
+                interpreter.mgui.drawAvatarSpecification(as, true);
+                TraceManager.addUser(as.toString());
 
                 return null;
             }