diff --git a/src/main/java/help/CPUNodeHelp.java b/src/main/java/help/CPUNodeHelp.java
index b80c3a2df1cd190358887988f96d62613edcd11d..c1948a7e4dbf14a7b79a3c0294dd9ccde3b3e460 100644
--- a/src/main/java/help/CPUNodeHelp.java
+++ b/src/main/java/help/CPUNodeHelp.java
@@ -2,6 +2,7 @@ package help;
 
 import ui.MainGUI;
 import ui.util.IconManager;
+import ui.window.JFrameHelp;
 
 import javax.swing.*;
 import java.awt.*;
@@ -15,21 +16,20 @@ import java.awt.event.ActionListener;
  * @author Minh Hiep PHAM
  */
 
-public class CPUNodeHelp extends JFrame {
+public class CPUNodeHelp extends JFrame implements ActionListener{
     private HelpEntry he;
     private JButton helpBut;
     private JEditorPane pane;
 
-    private MainGUI mgui = new MainGUI(false, false, false,false,
-            false,false,false,false,false,
-            false,false,false,false);
+    private MainGUI mgui = new MainGUI(false, true, true, true,
+            true, true, true, true, true, true,
+            true, false, true);
 
     public CPUNodeHelp(String title, HelpEntry _he) {
         super(title);
         he = _he;
 
         setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-        setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
         Container framePanel = getContentPane();
         framePanel.setLayout(new BorderLayout());
         Font f = new Font("Courrier", Font.BOLD, 12);
@@ -40,6 +40,7 @@ public class CPUNodeHelp extends JFrame {
         pane = new JEditorPane("text/html;charset=UTF-8", "");
         pane.setEditable(false);
         pane.setText(he.getHTMLContent());
+
         JScrollPane jsp = new JScrollPane(pane);
         jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
         helpPanel.add(jsp, BorderLayout.CENTER);
@@ -47,12 +48,13 @@ public class CPUNodeHelp extends JFrame {
         framePanel.add(helpPanel, BorderLayout.CENTER);
 
         helpBut = new JButton("Help", IconManager.imgic32);
-        helpBut.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                mgui.openHelpFrame(he);
-            }
-        });
+
+        HelpManager hm = new HelpManager();
+        if(hm.loadEntries()) {
+            mgui.setHelpManager(hm);
+        }
+
+        helpBut.addActionListener(this);
 
         JPanel jp = new JPanel();
         jp.add(helpBut);
@@ -60,5 +62,13 @@ public class CPUNodeHelp extends JFrame {
 
         setSize(400, 400);
         setVisible(true);
+        pack();
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        if(e.getSource() == helpBut) {
+            mgui.openHelpFrame(he);
+        }
     }
 }
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index 9c3a94f69759f1d6e6f9bf692e2ae09c700bdbc0..fef7fd3ded0e238801f124269521b56e32c6657d 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -712,6 +712,10 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per
         return helpManager;
     }
 
+    public void setHelpManager(HelpManager hm) {
+        helpManager = hm;
+    }
+
     public void showIntegratedHelp() {
         if (helpManager != null) {
             openHelpFrame(helpManager);
diff --git a/src/main/java/ui/window/JDialogCPUNode.java b/src/main/java/ui/window/JDialogCPUNode.java
index 265531b90765614a5188e499e441b1213342d7a6..05c6e32c0f2f4b403eb4c87f954e77a129fcf74f 100644
--- a/src/main/java/ui/window/JDialogCPUNode.java
+++ b/src/main/java/ui/window/JDialogCPUNode.java
@@ -41,7 +41,6 @@
 
 package ui.window;
 
-import cli.Action;
 import help.CPUNodeHelp;
 import help.HelpEntry;
 import help.HelpManager;
@@ -49,7 +48,6 @@ import myutil.GraphicLib;
 import myutil.TraceManager;
 import tmltranslator.modelcompiler.ArchUnitMEC;
 import ui.ColorManager;
-import ui.MainGUI;
 import ui.util.IconManager;
 import ui.interactivesimulation.SimulationTransaction;
 import ui.tmldd.TMLArchiCPUNode;
@@ -83,7 +81,6 @@ public class JDialogCPUNode extends JDialogBase implements ActionListener  {
  //   private static int selectedTracemode = 0;
     // Panel1
     protected JTextField nodeName;
-    private MainGUI mgui;
 
     // Panel2
     protected JTextField sliceTime, nbOfCores, byteDataSize, pipelineSize, goIdleTime, maxConsecutiveIdleCycles,
@@ -101,7 +98,7 @@ public class JDialogCPUNode extends JDialogBase implements ActionListener  {
     //issue 183
     List<JButton>   buttons = new ArrayList<>();
     List<HelpEntry> helpEntries;
-    CPUNodeHelp cpuHelp = null;
+    CPUNodeHelp cpuHelp;
 
     /* Creates new form  */
     public JDialogCPUNode(Frame _frame, String _title, TMLArchiCPUNode _node, ArchUnitMEC _MECType, java.util.List<SimulationTransaction> _transactions) {
@@ -134,7 +131,18 @@ public class JDialogCPUNode extends JDialogBase implements ActionListener  {
             @Override
             public void actionPerformed(ActionEvent e) {
                 if(cpuHelp == null ) {
-                    cpuHelp = new CPUNodeHelp("help",he);
+                    cpuHelp = new CPUNodeHelp("Help",he);
+                    cpuHelp.setLocationRelativeTo(but);
+                }else{
+                    if(!cpuHelp.isVisible()) {
+                        cpuHelp = new CPUNodeHelp("Help",he);
+                        cpuHelp.setLocationRelativeTo(but);
+                    }else{
+                        cpuHelp.setVisible(false);
+                    }
+                }
+
+                if(cpuHelp != null) {
                     cpuHelp.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "close");
                     cpuHelp.getRootPane().getActionMap().put("close", new AbstractAction() {
                         @Override
@@ -144,22 +152,6 @@ public class JDialogCPUNode extends JDialogBase implements ActionListener  {
                             cpuHelp.setVisible(false);
                         }
                     });
-                }else{
-                    if(!cpuHelp.isVisible()) {
-                        cpuHelp = new CPUNodeHelp("help",he);
-                        cpuHelp.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "close");
-                        cpuHelp.getRootPane().getActionMap().put("close", new AbstractAction() {
-                            @Override
-                            public void actionPerformed(ActionEvent e) {
-                                if(!cpuHelp.isVisible())
-                                    dispose();
-                                cpuHelp.setVisible(false);
-                            }
-                        });
-                    }else{
-                        cpuHelp.setVisible(false);
-                        cpuHelp = null;
-                    }
                 }
             }
         });
@@ -208,7 +200,6 @@ public class JDialogCPUNode extends JDialogBase implements ActionListener  {
             helpEntries.add(he16);
         }
 
-
         for(int i = 0; i < 17; i++) {
             Icon myIcon = IconManager.imgic32;
             JButton but = new JButton(myIcon);