diff --git a/uk/ac/sanger/artemis/components/variant/VCFview.java b/uk/ac/sanger/artemis/components/variant/VCFview.java
index bed0d10f64f5fea0a6ea1b06dfad035cf3560fb4..d8b0e1d383de842f3c1371d2aafb99b97184212e 100644
--- a/uk/ac/sanger/artemis/components/variant/VCFview.java
+++ b/uk/ac/sanger/artemis/components/variant/VCFview.java
@@ -125,6 +125,8 @@ public class VCFview extends JPanel
   private JPanel vcfPanel;
   private AbstractVCFReader vcfReaders[];
   private List<String> vcfFiles;
+  private List<Integer> hideVcfList = new Vector<Integer>();
+  
   private String header[];
   private FeatureDisplay feature_display;
   private Selection selection;
@@ -140,6 +142,7 @@ public class VCFview extends JPanel
 //record of where a mouse drag starts
   private int dragStart = -1;
   private JPopupMenu popup;
+  private JMenu vcfFilesMenu = new JMenu("VCF files");
   private int LINE_HEIGHT = 15;
   
   protected boolean showSynonymous = true;
@@ -445,6 +448,9 @@ public class VCFview extends JPanel
         
         for (int i = 0; i < vcfFileList.size(); i++)
           header[i+oldSize] = readHeader(vcfFileList.get(i), i+oldSize);
+        
+        for(int i=0; i<vcfFileList.size(); i++)
+          addToViewMenu(i+oldSize);
 
         setDisplay();
         repaint();
@@ -452,6 +458,11 @@ public class VCFview extends JPanel
       }
     });
     popup.add(addVCFMenu);
+    popup.add(vcfFilesMenu);
+    
+    for(int i=0; i<vcfFiles.size(); i++)
+      addToViewMenu(i);
+    
     popup.addSeparator();
     
 
@@ -700,6 +711,25 @@ public class VCFview extends JPanel
     popup.add(new JSeparator());
     popup.add(labels);
   }
+  
+  
+  private void addToViewMenu(final int thisBamIndex)
+  {
+    final JCheckBoxMenuItem cbBam = new JCheckBoxMenuItem(
+        getLabel(thisBamIndex), true);
+    vcfFilesMenu.add(cbBam);
+    cbBam.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        if(cbBam.isSelected())
+          hideVcfList.remove(new Integer(thisBamIndex));
+        else
+          hideVcfList.add(new Integer(thisBamIndex));
+        repaint();
+      } 
+    });
+  }
 
   private static EntryGroup getReference(String reference)
   {
@@ -956,6 +986,9 @@ public class VCFview extends JPanel
     FeatureVector features = getCDSFeaturesInRange(start, end);
     for (int i = 0; i < vcfReaders.length; i++)
     {
+      if(hideVcfList.contains(i))
+        continue;
+      
       if(concatSequences) 
       {
         String[] contigs = vcfReaders[0].getSeqNames();
@@ -1002,7 +1035,7 @@ public class VCFview extends JPanel
       String lab[] = new String[vcfReaders.length];
       for (int i = 0; i < vcfReaders.length; i++)
       {
-        lab[i] = vcfReaders[i].getName().replaceAll(FILE_SUFFIX, "");
+        lab[i] = getLabel(i);
         int width = fm.stringWidth(lab[i]);
         if(max < width)
          max = width;
@@ -1018,10 +1051,19 @@ public class VCFview extends JPanel
       g2d.setColor(Color.black);
       g2d.drawLine(max+1, 0, max+1, getHeight());
       for (int i = 0; i < vcfReaders.length; i++)
+      {
+        if(hideVcfList.contains(i))
+          continue;
         g.drawString(lab[i], 1, getYPostion(i));
+      }
     }
   }
   
+  private String getLabel(int index)
+  {
+    return vcfReaders[index].getName().replaceAll(FILE_SUFFIX, "");
+  }
+  
   private AlphaComposite makeComposite(float alpha) 
   {
     return(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
@@ -1332,7 +1374,12 @@ public class VCFview extends JPanel
   
   private int getYPostion(int vcfFileIndex)
   {
-    return getHeight() - 15 - (vcfFileIndex*(LINE_HEIGHT+5));
+    int pos = 0;
+    for(int i=0; i<vcfFileIndex; i++)
+      if(!hideVcfList.contains(i))
+        pos++;
+
+    return getHeight() - 15 - (pos*(LINE_HEIGHT+5));
   }
   
   private void findVariantAtPoint(Point mousePoint)