extracted tutorial frame to its own class
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
index e01f5df..658e7c5 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
@@ -501,7 +501,7 @@
         Action startTutorial =
             new AbstractAction("Tutorial...", new ImageIcon(ChainsawIcons.HELP)) {
                 public void actionPerformed(ActionEvent e) {
-                    logui.setupTutorial();
+                    logui.tutorialFrame.setupTutorial();
                 }
             };
 
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogUI.java b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
index 8496e80..45f9e06 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogUI.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
@@ -101,7 +101,7 @@
     private ChainsawToolBarAndMenus chainsawToolBarAndMenus;
     private ChainsawAbout aboutBox;
     private SettingsManager settingsManager;
-    private final JFrame tutorialFrame = new JFrame("Chainsaw Tutorial");
+    public TutorialFrame tutorialFrame;
     private JSplitPane mainReceiverSplitPane;
     private double lastMainReceiverSplitLocation = DEFAULT_MAIN_RECEIVER_SPLIT_LOCATION;
     private final List<LogPanel> identifierPanels = new ArrayList<>();
@@ -249,11 +249,11 @@
     private void setupHelpSystem() {
         welcomePanel = new WelcomePanel();
 
+        tutorialFrame = new TutorialFrame(receivers, receiverListeners, this, statusBar) ;
+
         JToolBar tb = welcomePanel.getToolbar();
-
-
         JButton help = new SmallButton.Builder().iconUrl(ChainsawIcons.HELP)
-            .action(this::setupTutorial).shortDescription("Tutorial").build();
+            .action(tutorialFrame::setupTutorial).shortDescription("Tutorial").build();
 
         tb.add(help);
 
@@ -602,7 +602,7 @@
             SwingHelper.invokeOnEDT(this::showReceiverConfigurationPanel);
         }
 
-        new TutorialFrame(receivers, receiverListeners, this).createTutorialFrame(tutorialFrame, statusBar);
+
 
         /*
          * loads the saved tab settings and if there are hidden tabs,
@@ -1242,26 +1242,6 @@
         return applicationPreferenceModel;
     }
 
-    public void setupTutorial() {
-        SwingUtilities.invokeLater(
-            () -> {
-                Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
-                setLocation(0, getLocation().y);
-
-                double chainsawwidth = 0.7;
-                double tutorialwidth = 1 - chainsawwidth;
-                setSize((int) (screen.width * chainsawwidth), getSize().height);
-                invalidate();
-                validate();
-
-                Dimension size = getSize();
-                Point loc = getLocation();
-                tutorialFrame.setSize(
-                    (int) (screen.width * tutorialwidth), size.height);
-                tutorialFrame.setLocation(loc.x + size.width, loc.y);
-                tutorialFrame.setVisible(true);
-            });
-    }
 
     private void buildLogPanel(
         boolean customExpression, final String ident, final List<ChainsawLoggingEvent> events, final ChainsawReceiver rx)
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/tutorial/TutorialFrame.java b/src/main/java/org/apache/log4j/chainsaw/components/tutorial/TutorialFrame.java
index 0f2abd3..96cb22c 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/tutorial/TutorialFrame.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/tutorial/TutorialFrame.java
@@ -20,23 +20,45 @@
 import java.io.IOException;
 import java.util.List;
 
-public class TutorialFrame {
+public class TutorialFrame extends JFrame {
     public static final String LABEL_TUTORIAL_STARTED = "TutorialStarted";
 
     private final Logger logger = LogManager.getLogger(TutorialFrame.class);
 
-    private List<ChainsawReceiver> receivers;
-    private List<ReceiverEventListener> receiverEventListeners;
-    private LogUI logUI;
-    private final JFrame tutorialFrame = new JFrame("Chainsaw Tutorial");
-    public TutorialFrame(List<ChainsawReceiver> receivers, List<ReceiverEventListener> receiverEventListeners, LogUI logUI) {
+    private final List<ChainsawReceiver> receivers;
+    private final List<ReceiverEventListener> receiverEventListeners;
+    private final LogUI logUI;
+
+    public TutorialFrame(List<ChainsawReceiver> receivers, List<ReceiverEventListener> receiverEventListeners, LogUI logUI, ChainsawStatusBar statusBar) {
+        super("Chainsaw Tutorial");
         this.receivers = receivers;
         this.receiverEventListeners = receiverEventListeners;
         this.logUI = logUI;
+
+        createTutorialFrame(statusBar);
     }
 
-    public void createTutorialFrame(JFrame tutorialFrame, ChainsawStatusBar statusBar) {
-        Container container = tutorialFrame.getContentPane();
+    public void setupTutorial() {
+        SwingUtilities.invokeLater(
+            () -> {
+                Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
+                setLocation(0, getLocation().y);
+
+                double chainsawwidth = 0.7;
+                double tutorialwidth = 1 - chainsawwidth;
+                setSize((int) (screen.width * chainsawwidth), getSize().height);
+                invalidate();
+                validate();
+
+                Dimension size = getSize();
+                Point loc = getLocation();
+                setSize((int) (screen.width * tutorialwidth), size.height);
+                setLocation(loc.x + size.width, loc.y);
+                setVisible(true);
+            });
+    }
+    public void createTutorialFrame(ChainsawStatusBar statusBar) {
+        Container container = getContentPane();
         container.setLayout(new BorderLayout());
 
         final JEditorPane tutorialArea = new JEditorPane();
@@ -52,8 +74,8 @@
             statusBar.setMessage("Can't load tutorial");
         }
 
-        this.tutorialFrame.setIconImage(new ImageIcon(ChainsawIcons.HELP).getImage());
-        this.tutorialFrame.setSize(new Dimension(640, 480));
+        this.setIconImage(new ImageIcon(ChainsawIcons.HELP).getImage());
+        this.setSize(new Dimension(640, 480));
 
         final Action startTutorial = createStartTutorialAction();
         final Action stopTutorial = createStopTutorialAction(startTutorial);
@@ -72,8 +94,7 @@
                             tutorialArea.setPage(e.getURL());
                         } catch (IOException e1) {
                             statusBar.setMessage("Failed to change URL for tutorial");
-                            logger.error(
-                                "Failed to change the URL for the Tutorial", e1);
+                            logger.error("Failed to change the URL for the Tutorial", e1);
                         }
                     }
                 }