diff --git a/src/main/java/ai/AIDiagramCoherency.java b/src/main/java/ai/AIDiagramCoherency.java
index 5573fc73fe3bf01b260ac717034da222483c1636..993dd13a02d4aa4e6f5b8e96cd130ad95b8ef76b 100644
--- a/src/main/java/ai/AIDiagramCoherency.java
+++ b/src/main/java/ai/AIDiagramCoherency.java
@@ -57,7 +57,8 @@ public class AIDiagramCoherency extends AIInteract {
     private static String KNOWLEDGE_ON_JSON_FOR_INCOHERENCIES = "When you are asked to identify all the relevant incoherencies between two " +
             "diagrams," +
             " return them as a JSON specification formatted as follows:" +
-            "{incoherencies: [{ \"description\": \"description of the incoherency\"...]}"
+            "{incoherencies: [{ \"diagram\" : \"diagram1 or diagram2\", \"description\": \"description of the incoherency\"}..." +
+            "]}"
            ;
 
 
diff --git a/src/main/java/ai/AISoftwareBlock.java b/src/main/java/ai/AISoftwareBlock.java
index 39c3c2a11c368455d5e8533d8c8ec318fc59d1af..3915eba4fa6ab877322c594cd464816b3dbff62f 100644
--- a/src/main/java/ai/AISoftwareBlock.java
+++ b/src/main/java/ai/AISoftwareBlock.java
@@ -144,7 +144,7 @@ public class AISoftwareBlock extends AIInteract {
             }
 
             if ((errors != null) && (errors.size() > 0)) {
-                questionT = "Your answer was not correct because of the following errors:";
+                questionT = "Update your answer because your answer has the following errors:";
                 for (String s : errors) {
                     questionT += "\n- " + s;
                 }
diff --git a/src/main/java/ai/AIUseCaseDiagram.java b/src/main/java/ai/AIUseCaseDiagram.java
index b530b5e7b364189828ce6c0cd92484faba525352..1fa761115c741f26d832950db005d878b2386b80 100644
--- a/src/main/java/ai/AIUseCaseDiagram.java
+++ b/src/main/java/ai/AIUseCaseDiagram.java
@@ -76,14 +76,15 @@ public class AIUseCaseDiagram extends AIInteract {
             "# Respect: each use case must start with a verb describing the point of view of the system. " +
             "# Respect: Any identifier of use cases must not contain any space. Use \"_\" instead.";
 
+
     public static String KNOWLEDGE_ON_JSON_FOR_CONNECTIONS = "When you are asked to identify connections between use cases and actors, " +
             "return them as a JSON specification " +
             "formatted as follows:" +
             "{connections: [{ \"element1\": \"usecase or actor name\", \"element2\": \"usecase or actor name\" ...]} " +
             "# Respect: two actors cannot be connected together. " +
             "# Respect: only include relations are supported between use cases" +
-            "# Respect: in an include relation, the use case including the other one must be \"element1\" in the json"
-            ;
+            "# Respect: in an include relation, the use case including the other one must be \"element1\" in the json" +
+            "# Respect: All actors must be connected to at least one use case";
 
 
 
@@ -162,6 +163,7 @@ public class AIUseCaseDiagram extends AIInteract {
                     ad = getConnections(json, errors);
 
                     TraceManager.addDev("Obtained use case diagram: " + ad.toString());
+                    TraceManager.addDev("" + errors.size() + " errors found");
                     /*specification = AvatarSpecification.fromJSON(json, "design", null, true);
                     if (specification != null) {
                         specification.addSignalsAndConnection(specification0);
@@ -282,6 +284,7 @@ public class AIUseCaseDiagram extends AIInteract {
         ad.addAllUseCases(namesOfUseCases);
         _errors.addAll(ad.makeConnectionsFromJson(_spec));
 
+
         return ad;
     }
 
diff --git a/src/main/java/avatartranslator/AvatarBlock.java b/src/main/java/avatartranslator/AvatarBlock.java
index 5d77ff15976147ad6a8836b484e5fad76bfc46fa..92bed46d2d14315b30f5b9cea6de4ede94563d1b 100644
--- a/src/main/java/avatartranslator/AvatarBlock.java
+++ b/src/main/java/avatartranslator/AvatarBlock.java
@@ -378,7 +378,7 @@ public class AvatarBlock extends AvatarElement implements AvatarStateMachineOwne
         return sb.toString();
     }
 
-    public String toTextFormat() {
+    public String toTextFormat(boolean putSMD) {
         StringBuffer sb = new StringBuffer("block:" + getName() + " \n");
         if (getFather() != null) {
             sb.append("  subblock of: " + getFather().getName() + "\n");
@@ -392,11 +392,14 @@ public class AvatarBlock extends AvatarElement implements AvatarStateMachineOwne
         for (AvatarSignal signal : signals) {
             sb.append("  signal: " + signal.toString() + "\n");
         }
-        if (asm != null) {
-            sb.append("State machine:\n");
-            sb.append(asm.toStringRecursive());
-        } else {
-            sb.append("No state machine");
+
+        if (putSMD) {
+            if (asm != null) {
+                sb.append("State machine:\n");
+                sb.append(asm.toStringRecursive());
+            } else {
+                sb.append("No state machine");
+            }
         }
 
         return sb.toString();
diff --git a/src/main/java/avatartranslator/AvatarSpecification.java b/src/main/java/avatartranslator/AvatarSpecification.java
index 2e7e65dd44bf4013986ced4059982d62e98ae88c..1edc4a6ca960045b773ab24edd61ac03bf3745c9 100644
--- a/src/main/java/avatartranslator/AvatarSpecification.java
+++ b/src/main/java/avatartranslator/AvatarSpecification.java
@@ -817,12 +817,12 @@ public class AvatarSpecification extends AvatarElement implements IBSParamSpec {
         return sb.toString();
     }
 
-    public String toTextFormat() {
+    public String toTextFormat(boolean putSMD, boolean putPragmas, boolean putConstants) {
         //Thread.currentThread().dumpStack();
         StringBuffer sb = new StringBuffer("Blocks:\n");
         //TraceManager.addDev("TS Block");
         for (AvatarBlock block : blocks) {
-            sb.append("*** " + block.toTextFormat() + "\n");
+            sb.append("*** " + block.toTextFormat(putSMD) + "\n");
 
         }
         //TraceManager.addDev("TS Relations");
@@ -830,12 +830,17 @@ public class AvatarSpecification extends AvatarElement implements IBSParamSpec {
         for (AvatarRelation relation : relations) {
             sb.append("\tRelation:" + relation.toString() + "\n");
         }
-        sb.append("\nPragmas:\n");
-        for (AvatarPragma pragma : pragmas) {
-            sb.append("\tPragma:" + pragma.toString() + "\n");
+        if (putPragmas) {
+            sb.append("\nPragmas:\n");
+            for (AvatarPragma pragma : pragmas) {
+                sb.append("\tPragma:" + pragma.toString() + "\n");
+            }
         }
-        for (AvatarConstant constant : constants) {
-            sb.append("\tConstant:" + constant.toString() + "\n");
+
+        if (putConstants) {
+            for (AvatarConstant constant : constants) {
+                sb.append("\tConstant:" + constant.toString() + "\n");
+            }
         }
 
         //TraceManager.addDev("TS All done");
diff --git a/src/main/java/avatartranslator/avatarucd/AvatarUCDConnection.java b/src/main/java/avatartranslator/avatarucd/AvatarUCDConnection.java
index fe6051cbd954ff1586ac96b80ebf31180ef17a4e..26762785238993707c4bf579200a8483fe998af7 100644
--- a/src/main/java/avatartranslator/avatarucd/AvatarUCDConnection.java
+++ b/src/main/java/avatartranslator/avatarucd/AvatarUCDConnection.java
@@ -70,4 +70,12 @@ public class AvatarUCDConnection extends AvatarElement {
         super(_name, _name);
     }
 
+    public boolean has(AvatarElement ae) {
+        return (ae == origin) || (ae == destination);
+    }
+
+    public boolean hasSameElementsAs(AvatarUCDConnection _conn) {
+        return has(_conn.origin) &&has(_conn.destination);
+    }
+
 }
diff --git a/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java b/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java
index 29421238005ebae5a186984533980717ccce451f..330f0a0c45f5c2cd27233ffe9f4d0b363e0eb53f 100644
--- a/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java
+++ b/src/main/java/avatartranslator/avatarucd/AvatarUseCaseDiagram.java
@@ -233,6 +233,33 @@ public class AvatarUseCaseDiagram extends AvatarElement {
             }
         }
 
+        // Check that all actors are connected to at least one use case
+        for(AvatarActor aa: actors) {
+            boolean found = false;
+            for(AvatarUCDConnection conn: connections) {
+                if (conn.has(aa)) {
+                    found = true;
+                    break;
+                }
+            }
+            if (!found) {
+                errors.add("Actor \"" + aa.getName() + "\" must be connected to at least one use case");
+            }
+        }
+
+        // Only one connection between the same elements
+        AvatarUCDConnection c1, c2;
+        for(int i=0; i<connections.size(); i++) {
+            c1 = connections.get(i);
+            for(int j=i+1; j<connections.size(); j++) {
+                c2 = connections.get(j);
+                if (c1.hasSameElementsAs(c2)) {
+                    errors.add(c1.getName() + " and " + c2.getName() + " are connected with multiple connections: use only one connection between " +
+                            "the" +
+                            " same elements");
+                }
+            }
+        }
 
         return errors;
     }
@@ -259,6 +286,8 @@ public class AvatarUseCaseDiagram extends AvatarElement {
             }
         }
 
+
+
         return sb.toString();
     }
 
@@ -390,6 +419,7 @@ public class AvatarUseCaseDiagram extends AvatarElement {
             return connection;
 
         }
+
     }
 
 
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index aaa8d1f222f21ea326c2c14ae76c207314e25c43..cead56b7f5e644a25eb7702addb748b9761e8acf 100644
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -10437,7 +10437,7 @@ public class GTURTLEModeling {
 
         } else if (_tdp instanceof AvatarBDPanel) {
             if (avatarspec != null) {
-                return avatarspec.toTextFormat();
+                return avatarspec.toTextFormat(false, false, false);
             }
 
         }
diff --git a/src/main/java/ui/window/JFrameAI.java b/src/main/java/ui/window/JFrameAI.java
index 8cd4c935b233aa6618e668b2087e16613fa58966..1e2aa1a62b2912296449b89f9f49b939c34b577c 100644
--- a/src/main/java/ui/window/JFrameAI.java
+++ b/src/main/java/ui/window/JFrameAI.java
@@ -59,10 +59,7 @@ import javax.swing.*;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
+import java.awt.event.*;
 import java.util.ArrayList;
 import java.util.HashMap;
 
@@ -223,18 +220,19 @@ public class JFrameAI extends JFrame implements ActionListener {
 
         JPanel questionPanel = new JPanel(new BorderLayout());
         questionPanel.setBorder(new javax.swing.border.TitledBorder("Question"));
-        questionPanel.setPreferredSize(new Dimension(450, 550));
+        //questionPanel.setMinimumSize(new Dimension(450, 550));
+
         question = new JTextPane();
         //question.setPreferredSize(new Dimension(400, 500));
         setOptionsJTextPane(question, true);
         JScrollPane scrollPane = new JScrollPane(question);
-        scrollPane.setPreferredSize(new Dimension(420, 500));
+        //scrollPane.setMinimumSize(new Dimension(420, 500));
         scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
         questionPanel.add(scrollPane, BorderLayout.CENTER);
 
         JPanel answerPanel = new JPanel(new BorderLayout());
         answerPanel.setBorder(new javax.swing.border.TitledBorder("Answer"));
-        answerPanel.setPreferredSize(new Dimension(550, 550));
+        //answerPanel.setMinimumSize(new Dimension(550, 550));
         answerPane = new JTabbedPane();
         answerPane.addChangeListener(new ChangeListener() {
             @Override
@@ -245,7 +243,7 @@ public class JFrameAI extends JFrame implements ActionListener {
         });
         ;
         answerPane.addMouseListener(new JFrameAI.PopupListener(this));
-        answerPane.setPreferredSize(new Dimension(500, 500));
+        //answerPane.setMinimumSize(new Dimension(500, 500));
         addChat(getChatName());
         answerPanel.add(answerPane, BorderLayout.CENTER);
 
@@ -255,14 +253,26 @@ public class JFrameAI extends JFrame implements ActionListener {
         //console.setPreferredSize(new Dimension(900, 150));
         inform("Select options and click on \"start\"\n");
         scrollPane = new JScrollPane(console);
-        scrollPane.setPreferredSize(new Dimension(900, 150));
+        //scrollPane.setMinimumSize(new Dimension(900, 150));
         scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
         consolePanel.add(scrollPane, BorderLayout.CENTER);
 
         JPanel middlePanel = new JPanel(new BorderLayout());
-        JPanel intermediate = new JPanel();
-        intermediate.add(questionPanel);
-        intermediate.add(answerPanel);
+        JSplitPane intermediate = new JSplitPane();
+        intermediate.setLeftComponent(questionPanel);
+        intermediate.setRightComponent(answerPanel);
+        //intermediate.setDividerLocation(0.5);
+
+        addComponentListener(new ComponentAdapter() {
+            @Override
+            public void componentResized(ComponentEvent e) {
+                intermediate.setDividerLocation(0.5);
+            }
+        });
+
+        /*JPanel intermediate = new JPanel(new BorderLayout());
+        intermediate.add(questionPanel, BorderLayout.WEST);
+        intermediate.add(answerPanel, BorderLayout.EAST);*/
         middlePanel.add(intermediate, BorderLayout.CENTER);
         middlePanel.add(consolePanel, BorderLayout.SOUTH);