diff --git a/build.txt b/build.txt
index caae186eec26de808f64a9c9248b0d0552de3b7c..d53d32a34931852d1fa0fb8ac80b8ef01a2fa555 100644
--- a/build.txt
+++ b/build.txt
@@ -1 +1 @@
-14817
\ No newline at end of file
+14820
\ No newline at end of file
diff --git a/src/main/java/attacktrees/Defense.java b/src/main/java/attacktrees/Defense.java
index 80524661dca7cc8218037697338a51f3a8838a0d..8b5cf87f4ebb1c7aab200f44173ee266d3f39ce2 100644
--- a/src/main/java/attacktrees/Defense.java
+++ b/src/main/java/attacktrees/Defense.java
@@ -85,6 +85,14 @@ public class Defense extends AttackElement {
                 relatedAttacks.add(_attack);
     }
 
+    public boolean hasRelatedAttacks() {
+        if (relatedAttacks == null) {
+            return false;
+        }
+
+        return relatedAttacks.size() > 0;
+    }
+
     public ArrayList<Attack> getRelatedAttacks() {
         return relatedAttacks;
     }
diff --git a/src/main/java/ui/AvatarPanelDrawer.java b/src/main/java/ui/AvatarPanelDrawer.java
index 6922d436392e031e9fc066c0b2c232c4f2f4d809..0cc9e7ad51647420d0de1c0ba4a8dc3c6c78bc26 100644
--- a/src/main/java/ui/AvatarPanelDrawer.java
+++ b/src/main/java/ui/AvatarPanelDrawer.java
@@ -546,6 +546,8 @@ public class AvatarPanelDrawer {
 				SMDCon.setTransitionInfo("", t.getAction(i, useOriginalValuesFirst).replaceAll(" ", ""));
 			}
 
+			SMDCon.setTransitionProbability(t.getDelayDistributionLaw(), t.getDelayExtra1(), t.getDelayExtra2());
+
 			smp.addComponent(SMDCon, p1.getX(), p1.getY(), false, true);
 
 			if (t.getOtherReferenceObjects() != null) {
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index 867acb410d5d90250b2086c2d23b16bf14074ee1..b55c6ff3116a055020d7062542d73af46f3010d6 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -1903,7 +1903,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
         atp.addAttackTreeDiagram(tabName);
         atp.atdp.drawable = false;
         atp.atdp.drawFromAttackTreeModel(_at);
-        atp.atdp.drawConnectionlessAttacks(_at);
+        //atp.atdp.drawConnectionlessAttacks(_at);
         atp.atdp.drawable = true;
         atp.atdp.repaint();
         TraceManager.addDev("Draw AT 4");
diff --git a/src/main/java/ui/atd/AttackTreeDiagramPanel.java b/src/main/java/ui/atd/AttackTreeDiagramPanel.java
index 323bf128b2c166a645279e09f069570a159db38f..c0eab5aa4e5d1a6dc83e1501c772fda177c2548e 100644
--- a/src/main/java/ui/atd/AttackTreeDiagramPanel.java
+++ b/src/main/java/ui/atd/AttackTreeDiagramPanel.java
@@ -43,10 +43,7 @@ package ui.atd;
 
 //import java.awt.*;
 
-import attacktrees.Attack;
-import attacktrees.AttackElement;
-import attacktrees.AttackNode;
-import attacktrees.AttackTree;
+import attacktrees.*;
 import avatartranslator.AvatarElement;
 import avatartranslator.avatarucd.AvatarActor;
 import myutil.NameChecker;
@@ -213,8 +210,11 @@ public class AttackTreeDiagramPanel extends TDiagramPanel implements TDPWithAttr
 
         HashMap<AttackElement, TGComponent> mapOfComponents = new HashMap<>();
 
+        String ret = drawAttackFromAttackTreeModel(mapOfComponents, _at, root, null, -1, 600, 100, 1200);
+        drawConnectionlessAttacks(_at);
+
+        return ret;
 
-        return drawAttackFromAttackTreeModel(mapOfComponents, _at, root, null, -1, 600, 100, 1200);
     }
 
     public void drawConnectionlessAttacks(AttackTree _at) {
@@ -300,8 +300,7 @@ public class AttackTreeDiagramPanel extends TDiagramPanel implements TDPWithAttr
             TGConnectingPoint p2 = attack.closerFreeTGConnectingPoint(constraint.getX(), constraint.getY(), true, false);
 
             if (p1 != null && p2 != null) {
-                p1.setFree(false);
-                p2.setFree(false);
+
 
                 TGConnector conn = null;
                 Vector<Point> points = new Vector<Point>();
@@ -312,6 +311,8 @@ public class AttackTreeDiagramPanel extends TDiagramPanel implements TDPWithAttr
                 }
 
                 if (conn != null) {
+                    p1.setFree(false);
+                    p2.setFree(false);
                     addComponent(conn, 0, 0, false, true);
                 }
             }
@@ -334,6 +335,59 @@ public class AttackTreeDiagramPanel extends TDiagramPanel implements TDPWithAttr
             }
         }
 
+        // Handling countermeasures
+        int xNoRel = 100;
+        int yNoRel = 100;
+        int newX, newY;
+        for(Defense def : _at.getDefenses()) {
+            if (def.hasRelatedAttacks()) {
+                Attack firstAttack = def.getRelatedAttacks().get(0);
+                TGComponent refToAtt = _mapOfComponents.get(firstAttack);
+                if (refToAtt != null) {
+                    newX = refToAtt.getX();
+                    newY = refToAtt.getY() + 100;
+                } else {
+                    newX = xNoRel;
+                    newY = yNoRel;
+                    yNoRel += 100;
+                }
+            } else {
+                newX = xNoRel;
+                newY = yNoRel;
+                yNoRel += 100;
+            }
+            ATDCountermeasure atdc = new ATDCountermeasure(newX, newY, getMinX(), getMaxX(), getMinY(), getMaxY(), true, null, this);
+            atdc.setDescription(def.getDescription());
+            atdc.setEnabled(def.isEnabled());
+            addBuiltComponent(atdc);
+
+            // Connections
+            for(Attack relatedAtt: def.getRelatedAttacks()) {
+                TGComponent refToAtt = _mapOfComponents.get(relatedAtt);
+                if (refToAtt != null) {
+                    TGConnectingPoint p1 = atdc.closerFreeTGConnectingPoint(refToAtt.getX(), refToAtt.getY(), false, true);
+                    TGConnectingPoint p2 = refToAtt.closerFreeTGConnectingPoint(atdc.getX(), atdc.getY(), true, false);
+
+                    if ((p1 != null) && (p2 != null)) {
+                        
+                        TGConnector conn = null;
+                        Vector<Point> points = new Vector<Point>();
+                        conn = new ATDCountermeasureConnector(0, 0, 0, 0, 0, 0, true, null,
+                                this, p1, p2, points);
+                        if (_valueConst != -1) {
+                            conn.setValue("" + _valueConst);
+                        }
+
+                        if (conn != null) {
+                            p1.setFree(false);
+                            p2.setFree(false);
+                            addComponent(conn, 0, 0, false, true);
+                        }
+                    }
+                }
+            }
+        }
+
         return null;
     }
 
diff --git a/src/main/java/ui/avatarsmd/AvatarSMDConnector.java b/src/main/java/ui/avatarsmd/AvatarSMDConnector.java
index 63138b6869aa9f0e03f8ff7ac03a41414c625ade..2e19d3accd37425f11c0b5b69640bed716bdc532 100644
--- a/src/main/java/ui/avatarsmd/AvatarSMDConnector.java
+++ b/src/main/java/ui/avatarsmd/AvatarSMDConnector.java
@@ -124,6 +124,12 @@ public class AvatarSMDConnector extends TGConnectorWithCommentConnectionPoints i
         tgc.setTimes(minDelay, maxDelay, minCompute, maxCompute);
     }
 
+    public void setTransitionProbability(int _delayDistributionLaw, String _extraDelay1, String _extraDelay2) {
+        AvatarSMDTransitionInfo ti = getAvatarSMDTransitionInfo();
+        ti.setTransitionProbability(""+_delayDistributionLaw, _extraDelay1, _extraDelay2);
+
+    }
+
     @Override
     protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2) {
         if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
diff --git a/src/main/java/ui/avatarsmd/AvatarSMDTransitionInfo.java b/src/main/java/ui/avatarsmd/AvatarSMDTransitionInfo.java
index 4b665ee2d95a9d1d4e6da520629deb6ce0631107..a6e517f541c987fd5e5978e2776ed8727a5d4ca8 100755
--- a/src/main/java/ui/avatarsmd/AvatarSMDTransitionInfo.java
+++ b/src/main/java/ui/avatarsmd/AvatarSMDTransitionInfo.java
@@ -924,6 +924,11 @@ public class AvatarSMDTransitionInfo extends TGCWithoutInternalComponent impleme
         return extraDelay2.getText();
     }
 
+    public void setTransitionProbability(String _delayDistributionLaw, String _extraDelay1, String _extraDelay2) {
+        delayDistributionLaw.setText(_delayDistributionLaw);
+        extraDelay1.setText(_extraDelay1);
+        extraDelay2.setText(_extraDelay2);
+    }
 
     /**
      * Issue #69
diff --git a/src/main/java/ui/util/DefaultText.java b/src/main/java/ui/util/DefaultText.java
index 477fa8a36c50bff5d83d5006ce292df5b26ec8df..3fea22214118f71cafc699d4a854fc8254d5df19 100755
--- a/src/main/java/ui/util/DefaultText.java
+++ b/src/main/java/ui/util/DefaultText.java
@@ -50,8 +50,8 @@ package ui.util;
  */
 public class DefaultText {
 
-    public static String BUILD = "14816";
-    public static String DATE = "2024/06/21 03:22:03 CET";
+    public static String BUILD = "14819";
+    public static String DATE = "2024/06/24 03:22:02 CET";
 
     public static StringBuffer sbAbout = makeAbout();