diff --git a/uk/ac/sanger/artemis/components/alignment/BamView.java b/uk/ac/sanger/artemis/components/alignment/BamView.java
index 601796da8e485314e4aa18266eadb049cfcbfdca..35927892c4131dd8373052054165d2d7973accf4 100644
--- a/uk/ac/sanger/artemis/components/alignment/BamView.java
+++ b/uk/ac/sanger/artemis/components/alignment/BamView.java
@@ -67,6 +67,7 @@ import java.util.List;
 import java.util.Vector;
 
 import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
 import javax.swing.ButtonGroup;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
@@ -155,7 +156,7 @@ public class BamView extends JPanel
   
   private FeatureDisplay feature_display;
   private Selection selection;
-  private JPanel mainPanel;
+  private JPanel mainPanel = new JPanel();
   private CoveragePanel coveragePanel;
   private SnpPanel snpPanel;
 
@@ -223,7 +224,7 @@ public class BamView extends JPanel
                  int nbasesInView,
                  final FeatureDisplay feature_display,
                  final Bases bases,
-                 final JPanel mainPanel,
+                 final JPanel containerPanel,
                  final JFrame frame)
   {
     super();
@@ -232,7 +233,9 @@ public class BamView extends JPanel
     this.nbasesInView = nbasesInView;
     this.feature_display = feature_display;
     this.bases = bases;
-    this.mainPanel = mainPanel;
+    
+    containerPanel.setLayout(new BoxLayout(containerPanel, BoxLayout.Y_AXIS));
+    containerPanel.add(mainPanel);
     
     // filter out unmapped reads by default
     setSamRecordFlagPredicate(
@@ -293,8 +296,7 @@ public class BamView extends JPanel
     buttonGroup.add(cbIsizeStackView);
     buttonGroup.add(cbCoverageView);
     addMouseListener(new PopupListener());
-    
-    
+
     jspView = new JScrollPane(this, 
         JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
         JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
@@ -303,7 +305,7 @@ public class BamView extends JPanel
     Border empty = new EmptyBorder(0,0,0,0);
     jspView.setBorder(empty);
     jspView.getVerticalScrollBar().setUnitIncrement(8);
-    
+
     addBamToPanel(frame);
   }
   
@@ -367,7 +369,7 @@ public class BamView extends JPanel
       out.close();
       is.close();
 
-      System.out.println("create... " + bamIndexFile.getAbsolutePath());
+      logger4j.debug("create... " + bamIndexFile.getAbsolutePath());
     }
     else
       bamIndexFile = new File(bam + ".bai");
@@ -1947,8 +1949,7 @@ public class BamView extends JPanel
     snpPanel.setPreferredSize(new Dimension(900, 100));
     snpPanel.setVisible(false);
 
-    setFocusable(true);
-    requestFocusInWindow();
+    mainPanel.revalidate();
     jspView.getVerticalScrollBar().setValue(
         jspView.getVerticalScrollBar().getMaximum());
   }
@@ -1998,6 +1999,29 @@ public class BamView extends JPanel
     
     bamFilesMenu.setFont(addBam.getFont());
     menu.add(bamFilesMenu);
+    
+    final JMenuItem bamSplitter = new JMenuItem("Clone window");
+    bamSplitter.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        BamView bamView = new BamView(bamList, null, nbasesInView, 
+            feature_display, bases, (JPanel) mainPanel.getParent(), null);
+        bamView.getJspView().getVerticalScrollBar().setValue(
+            bamView.getJspView().getVerticalScrollBar().getMaximum());
+
+        int start = getBaseAtStartOfView();
+        setDisplay(start, nbasesInView+start, null);
+        if(feature_display != null)
+        {
+          feature_display.addDisplayAdjustmentListener(bamView);
+          feature_display.getSelection().addSelectionChangeListener(bamView);
+        }
+      } 
+    });
+    bamFilesMenu.add(bamSplitter);
+    bamFilesMenu.add(new JSeparator());
+    
     for(int i=0; i<bamList.size(); i++)
       addToViewMenu(i);
     
@@ -2259,9 +2283,10 @@ public class BamView extends JPanel
   private JComponent bamTopPanel(final JFrame frame)
   {
     final JComponent topPanel;
-    if(feature_display != null)
+    if(frame == null)
     {
-      this.selection = feature_display.getSelection();
+      if(feature_display != null)
+        this.selection = feature_display.getSelection();
       topPanel = new JPanel(new FlowLayout(FlowLayout.LEADING, 0, 0));
     }
     else
@@ -2350,7 +2375,7 @@ public class BamView extends JPanel
     }
 
     // auto hide top panel
-    final JCheckBox buttonAutoHide = new JCheckBox("Hide", (feature_display != null));
+    final JCheckBox buttonAutoHide = new JCheckBox("Hide", (frame == null));
     buttonAutoHide.setToolTipText("Auto-Hide");
     final MouseMotionListener mouseMotionListener = new MouseMotionListener()
     {