diff --git a/src/main/java/tmltranslator/SecurityBacktracer.java b/src/main/java/tmltranslator/SecurityBacktracer.java
index ae8086a1181a448c9421c6cc0233bbc68f845bbb..8dfc4185cfefce827304400fa20f9800146e55a9 100644
--- a/src/main/java/tmltranslator/SecurityBacktracer.java
+++ b/src/main/java/tmltranslator/SecurityBacktracer.java
@@ -68,5 +68,9 @@ public interface SecurityBacktracer {
 
     public void setStrongAuthStatus(int _strongAuthStatus);
 
+    public boolean getConfCheck();
+    public void setConfCheck(boolean _confCheck);
+    public int getConfStatus();
+    void setConfStatus(int _confStatus);
 
 }
diff --git a/src/main/java/tmltranslator/TMLModeling.java b/src/main/java/tmltranslator/TMLModeling.java
index 19af02ff5bd8ccba902f843291855549e6e9cdb5..ce5f3d41554b55807edc6f8e8bed4433455ac462 100755
--- a/src/main/java/tmltranslator/TMLModeling.java
+++ b/src/main/java/tmltranslator/TMLModeling.java
@@ -64,6 +64,7 @@ public class TMLModeling<E> {
     // Security
     private List<SecurityPattern> secPatterns;
     private Map<TMLChannel, Set<AvatarPragma>> secChannelMap;
+    private Map<TMLWriteChannel, Set<AvatarPragma>> wrPragmaMap;
     private Map<SecurityPattern, List<TMLTask>> securityTaskMap;
 
     // Tasks and communication
@@ -132,6 +133,14 @@ public class TMLModeling<E> {
         this.secChannelMap = secChannelMap;
     }
 
+    public Map<TMLWriteChannel, Set<AvatarPragma>> getWrPragmaMap() {
+        return wrPragmaMap;
+    }
+
+    public void setWrPragmaMap(Map<TMLWriteChannel, Set<AvatarPragma>> wrPragmaMap) {
+        this.wrPragmaMap = wrPragmaMap;
+    }
+
     public TMLMapping<E> getDefaultMapping() {
         TMLMapping<E> tmlmapping;
         tmlmapping = new TMLMapping<>(this, new TMLArchitecture(), false);
@@ -782,20 +791,69 @@ public class TMLModeling<E> {
 
         return list;
     }
+    private void backtraceConfidentialityInAD(Map<AvatarPragmaSecret, ProVerifQueryResult> confResults, TMLChannel ch) {
+        if (ch.isCheckConfChannel()) {
+            List<TMLTask> tasks = new ArrayList<TMLTask>();
+            if (!ch.getOriginTasks().isEmpty()) {
+                tasks.addAll(ch.getOriginTasks());
+            } else {
+                tasks.add(ch.getOriginTask());
+            }
+            for (TMLTask task : tasks) {
+                for (TMLActivityElement actElem : task.getActivityDiagram().getElements()) {
+                    if (actElem instanceof TMLWriteChannel) {
+                        TMLWriteChannel wc = (TMLWriteChannel) actElem;
+                        if (wrPragmaMap.containsKey(wc)) {
+                            List<Integer> confStatus = new ArrayList<Integer>();
+                            for (AvatarPragma pragma : wrPragmaMap.get(wc)) {
+                                if (pragma instanceof AvatarPragmaSecret) {
+                                    AvatarPragmaSecret pragmaSecret = (AvatarPragmaSecret) pragma;
+                                    ProVerifQueryResult result = confResults.get(pragmaSecret);
+                                    if (result != null) {
+                                        if (!result.isProved()) {
+                                            confStatus.add(1);
+                                        } else {
+                                            int r = result.isSatisfied() ? 2 : 3;
+                                            confStatus.add(r);
+                                        }
+                                    }
+                                }
+                            }
+                            int generalConfResult = 1;
+                            if (!confStatus.isEmpty()) {
+                                if (confStatus.contains(3)) {
+                                    generalConfResult = 3;
+                                } else if (confStatus.contains(1)) {
+                                    generalConfResult = 1;
+                                } else {
+                                    generalConfResult = 2;
+                                }
+                            }
+                            if (wc.getReferenceObject() instanceof SecurityBacktracer) {
+                                SecurityBacktracer sec = (SecurityBacktracer) wc.getReferenceObject();
+                                sec.setConfCheck(ch.checkConf);
+                                sec.setConfStatus(generalConfResult);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 
-    public void backtrace(ProVerifOutputAnalyzer pvoa, String mappingName) {
+    public void backtraceConfidentiality(ProVerifOutputAnalyzer pvoa, String mappingName) {
         //TraceManager.addDev("Backtracing Confidentiality");
         Map<AvatarPragmaSecret, ProVerifQueryResult> confResults = pvoa.getConfidentialityResults();
         for (TMLChannel ch : secChannelMap.keySet()) {
             if (ch.isCheckConfChannel()) {
                 List<Integer> confStatus = new ArrayList<Integer>();
-                String secName = "";
+                Set<String> secNames = new HashSet<String>();
                 ProVerifResultTrace trace = null;
                 String pragmaString = "";
                 for (AvatarPragma pragma : secChannelMap.get(ch)) {
                     if (pragma instanceof AvatarPragmaSecret) {
                         AvatarPragmaSecret pragmaSecret = (AvatarPragmaSecret) pragma;
-                        secName += pragmaSecret.getArg().getName();
+                        secNames.add(pragmaSecret.getArg().getName());
                         ProVerifQueryResult result = confResults.get(pragmaSecret);
                         if (result != null) {
                             if (!result.isProved()) {
@@ -804,6 +862,7 @@ public class TMLModeling<E> {
                                 int r = result.isSatisfied() ? 2 : 3;
                                 confStatus.add(r);
                             }
+                            //backtraceConfidentialityInAD(pragmaSecret, ch, confStatus.get(confStatus.size() - 1));
                             trace = pvoa.getResults().get(pragma).getTrace();
                             pragmaString = pragma.toString();
                         }
@@ -823,8 +882,7 @@ public class TMLModeling<E> {
                 for (TMLPortWithSecurityInformation port : ch.ports) {
                     if (port.getCheckConf()) {
                         port.setConfStatus(generalConfResult);
-                        TraceManager.addDev("secName = " + secName);
-                        port.setSecName(secName);
+                        port.setSecName(String.join(" ", secNames));
                         port.setMappingName(mappingName);
                         port.setPragmaString(pragmaString);
                         if (trace != null) {
@@ -832,6 +890,7 @@ public class TMLModeling<E> {
                         }
                     }
                 }
+                backtraceConfidentialityInAD(confResults, ch);
             }
         }
     }
@@ -2761,20 +2820,6 @@ public class TMLModeling<E> {
         return true;
     }
 
-    public int updateStrongAuthenticityStatus(int _lastStrongAuthStatus, int _lastWeakAuthStatus,
-            boolean _isStrongAuthProved, boolean _isStrongAuthSatisfied, boolean _isWeakAuthProved,
-            boolean _isWeakAuthSatisfied) {
-        if (_isStrongAuthProved && _isStrongAuthSatisfied && _isWeakAuthProved && _isWeakAuthSatisfied
-                && _lastStrongAuthStatus != 3 && _lastWeakAuthStatus != 3) {
-            return 2;
-        } else if (!_isStrongAuthProved && !(_isWeakAuthProved && !_isWeakAuthSatisfied) && _lastStrongAuthStatus < 3 && _lastWeakAuthStatus < 3) {
-            return 1;
-        }
-        else {
-            return 3;
-        } 
-    }
-
     @SuppressWarnings("unchecked")
     public TMLModeling deepClone() throws TMLCheckingError {
         TMLModeling tmlm = new TMLModeling();
diff --git a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
index e02dc4cedcfdf99b0878568485adda3d84d886b0..36a905a06c8570d06f74fa5400b1cc6e09fcb5a1 100644
--- a/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
+++ b/src/main/java/tmltranslator/toavatarsec/TML2Avatar.java
@@ -68,6 +68,7 @@ public class TML2Avatar {
     private int loopLimit = 1;
     private HashMap<TMLChannel, Set<String>> channelsSecAttributes = new HashMap<TMLChannel, Set<String>>();
     private HashMap<TMLChannel, Set<AvatarPragma>> secChannelMap = new HashMap<TMLChannel, Set<AvatarPragma>>();
+    private Map<TMLWriteChannel, Set<AvatarPragma>> wrPragmaMap = new HashMap<TMLWriteChannel, Set<AvatarPragma>>();;
     private HashMap<String, List<AvatarAttributeState>> signalAuthOriginMap = new HashMap<String, List<AvatarAttributeState>>();
     private HashMap<String, List<AvatarAttributeState>> signalAuthDestMap = new HashMap<String, List<AvatarAttributeState>>();
     private List<AvatarSignal> signals = new ArrayList<AvatarSignal>();
@@ -1465,6 +1466,12 @@ public class TML2Avatar {
                                     if (!isAvSecretInSet) {
                                         secChannelMap.get(ch).add(avPragmaSecret);
                                     }
+
+                                    if (!wrPragmaMap.containsKey((TMLWriteChannel) ae)) {
+                                        Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                        wrPragmaMap.put((TMLWriteChannel) ae, tmp);
+                                    }
+                                    wrPragmaMap.get((TMLWriteChannel) ae).add(avPragmaSecret);
                                 }
                             }
                         }
@@ -1488,6 +1495,12 @@ public class TML2Avatar {
                             if (!isAvSecretInSet) {
                                 secChannelMap.get(ch).add(avPragmaSecret);
                             }
+
+                            if (!wrPragmaMap.containsKey((TMLWriteChannel) ae)) {
+                                Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                wrPragmaMap.put((TMLWriteChannel) ae, tmp);
+                            }
+                            wrPragmaMap.get((TMLWriteChannel) ae).add(avPragmaSecret);
                         }
                     }
                 }
@@ -2132,7 +2145,12 @@ public class TML2Avatar {
                                     if (!isAvSecretInSet) {
                                         secChannelMap.get(ch).add(secPatternPragmaMap.get(secPattern));
                                     }
-                                    break;
+
+                                    if (!wrPragmaMap.containsKey(wc)) {
+                                        Set<AvatarPragma> tmp = new HashSet<AvatarPragma>();
+                                        wrPragmaMap.put(wc, tmp);
+                                    }
+                                    wrPragmaMap.get(wc).add(secPatternPragmaMap.get(secPattern));
                                 }
                             }
                         }
@@ -2626,6 +2644,7 @@ public class TML2Avatar {
         }
 
         tmlmap.getTMLModeling().setSecChannelMap(secChannelMap);
+        tmlmap.getTMLModeling().setWrPragmaMap(wrPragmaMap);
 
 //			System.out.println("avatar spec\n" +avspec);
         return avspec;
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index bf1ea9dbac4e5f0c0a96e6a4828301cb2eb9d160..babada70eafd7b0476218d1ac7f7cea0cfb4c285 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -4876,7 +4876,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
             if (gtm.getTMLMapping() != null) {
                 gtm.getTMLMapping().getTMLModeling().clearBacktracing();
                 getCurrentTDiagramPanel().clearAuthenticityBacktracing();
-                gtm.getTMLMapping().getTMLModeling().backtrace(pvoa, getTabName(tp));
+                gtm.getTMLMapping().getTMLModeling().backtraceConfidentiality(pvoa, getTabName(tp));
                 gtm.getTML2Avatar().backtraceReachability(pvoa.getReachabilityResults());
                 gtm.getTML2Avatar().backtraceAuthenticityADReadChannels(pvoa, getTabName(tp));
                 gtm.getTMLMapping().getTMLModeling().backtraceAuthenticity(pvoa, getTabName(tp));
@@ -4887,7 +4887,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
             if (gtm.getTMLMapping() != null) {
                 gtm.getTMLMapping().getTMLModeling().clearBacktracing();
                 getCurrentTDiagramPanel().clearAuthenticityBacktracing();
-                gtm.getTMLMapping().getTMLModeling().backtrace(pvoa, "Default Mapping");
+                gtm.getTMLMapping().getTMLModeling().backtraceConfidentiality(pvoa, "Default Mapping");
                 gtm.getTML2Avatar().backtraceReachability(pvoa.getReachabilityResults());
                 gtm.getTML2Avatar().backtraceAuthenticityADReadChannels(pvoa, "Default Mapping");
                 gtm.getTMLMapping().getTMLModeling().backtraceAuthenticity(pvoa, "Default Mapping");
diff --git a/src/main/java/ui/tmlad/TMLADReadChannel.java b/src/main/java/ui/tmlad/TMLADReadChannel.java
index 01486295204cddf71639122e1113fdb4f2dba915..df74b53c7dcce827cae6fb4a0e4c8aac86bb150d 100755
--- a/src/main/java/ui/tmlad/TMLADReadChannel.java
+++ b/src/main/java/ui/tmlad/TMLADReadChannel.java
@@ -594,6 +594,26 @@ public class TMLADReadChannel extends TADComponentWithoutSubcomponents/* Issue #
         strongAuthStatus = _strongAuthStatus;
     }
 
+    @Override
+    public boolean getConfCheck() {
+        return false;
+    }
+
+    @Override
+    public void setConfCheck(boolean _confCheck) {
+
+    }
+
+    @Override
+    public int getConfStatus() {
+        return 0;
+    }
+
+    @Override
+    public void setConfStatus(int _confStatus) {
+
+    }
+
     public String getCommunicationName() {
         return channelName;
     }
diff --git a/src/main/java/ui/tmlad/TMLADWriteChannel.java b/src/main/java/ui/tmlad/TMLADWriteChannel.java
index 6c75be7719b8c26392a0074e34c5d18dd1368014..d2785468efa53e57d533adbae5c70365cd27a32c 100755
--- a/src/main/java/ui/tmlad/TMLADWriteChannel.java
+++ b/src/main/java/ui/tmlad/TMLADWriteChannel.java
@@ -55,6 +55,7 @@ import org.w3c.dom.NodeList;
 
 import myutil.Conversion;
 import myutil.GraphicLib;
+import tmltranslator.SecurityBacktracer;
 import tmltranslator.SecurityCheckable;
 import ui.AllowedBreakpoint;
 import ui.BasicErrorHighlight;
@@ -83,7 +84,7 @@ import ui.window.TabInfo;
  * @version 1.0 17/11/2005
  */
 public class TMLADWriteChannel extends TADComponentWithoutSubcomponents/* Issue #69 TGCWithoutInternalComponent*/ implements CheckableAccessibility,
-        LinkedReference, CheckableLatency, EmbeddedComment, AllowedBreakpoint, BasicErrorHighlight, SecurityCheckable {
+        LinkedReference, CheckableLatency, EmbeddedComment, AllowedBreakpoint, BasicErrorHighlight, SecurityCheckable, SecurityBacktracer {
 
 	// Issue #31
 //    protected int lineLength = 5;
@@ -115,6 +116,8 @@ public class TMLADWriteChannel extends TADComponentWithoutSubcomponents/* Issue
 	// public boolean isEncForm = true;
 
     private int securityMaxX;
+    private boolean confCheck;
+    private int confStatus;
 
     public TMLADWriteChannel(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp) {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
@@ -217,6 +220,9 @@ public class TMLADWriteChannel extends TADComponentWithoutSubcomponents/* Issue
             }
             g.setColor(c);
         }
+        if (confCheck) {
+            drawConfidentialityInformation(g);
+        }
 
         if (getCheckLatency()) {
             ConcurrentHashMap<String, String> latency = tdp.getMGUI().getLatencyVals(getDIPLOID());
@@ -279,6 +285,51 @@ public class TMLADWriteChannel extends TADComponentWithoutSubcomponents/* Issue
         }
     }
 
+    public void drawConfidentialityInformation(Graphics g) {
+        final double coeffSpacePortConfLock = 0.1;
+        final double coeffConfLock = 0.9;
+        final double coeffConfOval = 0.8;
+        //final double coeffYCoordinateOffsetDrawConf = 1.01;
+        double spacePortConfLock = width * coeffSpacePortConfLock;
+        double confLockWidth = height * coeffConfLock;
+        double confLockHeight = height * coeffConfLock;
+        double confOvalWidth =  height * coeffConfOval;
+        double confOvalHeight = height * coeffConfOval;
+        double xCoordinateConfLockLeft = x + width + spacePortConfLock;
+        double xCoordinateConfLockRight = x + width + confLockWidth + spacePortConfLock;
+        double yCoordinateConfLockTop = y + height - confLockHeight;
+        double yCoordinateConfLockBottom = y + height;
+        double xCoordinateConfOvalLeft = xCoordinateConfLockLeft + (confLockWidth - confOvalWidth)/2;
+        double yCoordinateConfOvalTop = yCoordinateConfLockTop - confOvalHeight/2;
+
+        Color c = g.getColor();
+        Color c1;
+        switch (confStatus) {
+            case 1:
+                c1 = Color.gray;
+                break;
+            case 2:
+                c1 = Color.green;
+                break;
+            case 3:
+                c1 = Color.red;
+                break;
+            default:
+                return;
+        }
+        g.drawOval((int) (xCoordinateConfOvalLeft), (int) (yCoordinateConfOvalTop), (int)confOvalWidth, (int)confOvalHeight);
+        g.setColor(c1);
+        g.fillRect((int) (xCoordinateConfLockLeft), (int) (yCoordinateConfLockTop), (int)confLockWidth, (int)confLockHeight);
+        g.setColor(c);
+        g.drawRect((int) (xCoordinateConfLockLeft), (int) (yCoordinateConfLockTop), (int)confLockWidth, (int)confLockHeight);
+        if (confStatus == 3) {
+            g.drawLine((int) (xCoordinateConfLockLeft), (int) (yCoordinateConfLockTop),
+                    (int) (xCoordinateConfLockRight), (int) (yCoordinateConfLockBottom));
+            g.drawLine((int) (xCoordinateConfLockRight), (int) (yCoordinateConfLockTop),
+                    (int) (xCoordinateConfLockLeft), (int) (yCoordinateConfLockBottom));
+        }
+    }
+
     @Override
     public TGComponent isOnMe(int _x, int _y) {
         if (GraphicLib.isInRectangle(_x, _y, x, y, width, height)) {
@@ -507,4 +558,55 @@ public class TMLADWriteChannel extends TADComponentWithoutSubcomponents/* Issue
     public String getCommunicationName() {
         return channelName;
     }
+
+    @Override
+    public boolean getConfCheck() {
+        return confCheck;
+    }
+
+    @Override
+    public void setConfCheck(boolean _confCheck) {
+        confCheck = _confCheck;
+        makeValue();
+    }
+
+    @Override
+    public int getConfStatus() {
+        return confStatus;
+    }
+
+    @Override
+    public void setConfStatus(int _confStatus) {
+        confStatus = _confStatus;
+    }
+
+    @Override
+    public boolean getAuthCheck() {
+        return false;
+    }
+
+    @Override
+    public void setAuthCheck(boolean _authCheck) {
+
+    }
+
+    @Override
+    public int getWeakAuthStatus() {
+        return 0;
+    }
+
+    @Override
+    public void setWeakAuthStatus(int _weakAuthStatus) {
+
+    }
+
+    @Override
+    public int getStrongAuthStatus() {
+        return 0;
+    }
+
+    @Override
+    public void setStrongAuthStatus(int _strongAuthStatus) {
+
+    }
 }