diff --git a/uk/ac/sanger/artemis/components/variant/IOUtils.java b/uk/ac/sanger/artemis/components/variant/IOUtils.java
index 9b337790d467e647d9b48c4ebbe77512a398b033..06843480cb11da3989f822e52ebdba91f37bf84e 100644
--- a/uk/ac/sanger/artemis/components/variant/IOUtils.java
+++ b/uk/ac/sanger/artemis/components/variant/IOUtils.java
@@ -23,6 +23,7 @@
  */
 package uk.ac.sanger.artemis.components.variant;
 
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileWriter;
 import java.io.IOException;
@@ -30,12 +31,15 @@ import java.io.InputStream;
 import java.net.URL;
 import java.util.List;
 
+import javax.swing.JFileChooser;
+
 import uk.ac.sanger.artemis.EntryGroup;
 import uk.ac.sanger.artemis.Feature;
 import uk.ac.sanger.artemis.FeatureEnumeration;
 import uk.ac.sanger.artemis.FeatureKeyQualifierPredicate;
 import uk.ac.sanger.artemis.FeatureVector;
 import uk.ac.sanger.artemis.components.MessageDialog;
+import uk.ac.sanger.artemis.components.StickyFileChooser;
 import uk.ac.sanger.artemis.io.Key;
 
 import net.sf.samtools.util.BlockCompressedInputStream;
@@ -49,17 +53,18 @@ class IOUtils
    * @param vcfView
    * @param features
    */
-  protected static void writeVCF(final String vcfFileName, 
+  protected static File writeVCF(final String vcfFileName, 
                                  final VCFview vcfView,
                                  final FeatureVector features)
   {
     try
     {
-      FileWriter writer = new FileWriter(vcfFileName+".filter");
+      File filterFile = getFile(vcfFileName);
+      FileWriter writer = new FileWriter(filterFile);
       if(IOUtils.isBCF(vcfFileName))
       {
         BCFReader.writeVCF(writer, vcfFileName);
-        return;
+        return filterFile;
       }
       
       TabixReader tr = new TabixReader(vcfFileName);
@@ -79,13 +84,31 @@ class IOUtils
         writer.write(line+'\n');
       }
       writer.close();
+      return filterFile;
     }
     catch (IOException e)
     {
       e.printStackTrace();
+      return null;
     }
   }
   
+  private static File getFile(final String vcfFileName) throws IOException
+  {
+    final StickyFileChooser file_dialog = new StickyFileChooser();
+
+    file_dialog.setSelectedFile(new File(vcfFileName+".filter"));
+    file_dialog.setDialogTitle("Choose save file ...");
+    file_dialog.setDialogType(JFileChooser.SAVE_DIALOG);
+    final int status = file_dialog.showSaveDialog(null);
+
+    if(status != JFileChooser.APPROVE_OPTION ||
+       file_dialog.getSelectedFile() == null) 
+      return null;
+    
+    return file_dialog.getSelectedFile();
+  }
+  
   /**
    * Export as a VCF based on the filtering applied in the VCFview.
    * @param entryGroup
@@ -113,8 +136,8 @@ class IOUtils
     String filterFiles = "";
     for(int i=0; i<vcfFiles.size(); i++)
     {
-      IOUtils.writeVCF(vcfFiles.get(i), vcfView, features);
-      filterFiles += vcfFiles.get(i)+".filter\n";
+      File filterFile = IOUtils.writeVCF(vcfFiles.get(i), vcfView, features);
+      filterFiles += filterFile.getAbsolutePath()+"\n";
     }
 
     new MessageDialog (null, "Saved Files", filterFiles, false);
diff --git a/uk/ac/sanger/artemis/components/variant/VCFFilter.java b/uk/ac/sanger/artemis/components/variant/VCFFilter.java
index 72e425edd20f22d490c3bfd1fe8764d0b48f35a7..a418497c554c1e3528ba7f94153d4b3dc2d4c307 100644
--- a/uk/ac/sanger/artemis/components/variant/VCFFilter.java
+++ b/uk/ac/sanger/artemis/components/variant/VCFFilter.java
@@ -112,6 +112,17 @@ public class VCFFilter extends JFrame
       }
     });
     
+    c.gridy = c.gridy + 1;
+    final JCheckBox showNonVariantMenu = new JCheckBox("Non-Varaints", vcfView.showNonVariants);
+    panel.add(showNonVariantMenu, c);
+    showNonVariantMenu.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent e)
+      {
+        vcfView.showNonVariants = showNonVariantMenu.isSelected();
+        vcfView.repaint();
+      }
+    });
+    
     if(vcfView.getEntryGroup() == null || vcfView.getEntryGroup().getAllFeaturesCount() == 0)
     {
       showSyn.setEnabled(false);
diff --git a/uk/ac/sanger/artemis/components/variant/VCFview.java b/uk/ac/sanger/artemis/components/variant/VCFview.java
index 19cd88e48ab4702a417349fcd97c6579de594af6..4e42585211dc99d9258e464ef3993eac2d0559be 100644
--- a/uk/ac/sanger/artemis/components/variant/VCFview.java
+++ b/uk/ac/sanger/artemis/components/variant/VCFview.java
@@ -144,6 +144,7 @@ public class VCFview extends JPanel
   protected boolean showMultiAlleles = true;
   // show variants that do not overlap CDS
   protected boolean showNonOverlappings = true;
+  protected boolean showNonVariants = false;
   
   private boolean markAsNewStop = false;
   private JCheckBoxMenuItem markNewStops =
@@ -498,6 +499,9 @@ public class VCFview extends JPanel
     
     popup.addSeparator();
     
+    final JMenu export = new JMenu("Export");
+    popup.add(export);
+    
     final JMenuItem exportVCF = new JMenuItem("Export filtered VCF");
     exportVCF.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e)
@@ -507,7 +511,18 @@ public class VCFview extends JPanel
         VCFview.this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
       }
     });
-    popup.add(exportVCF);
+    export.add(exportVCF);
+    
+    final JMenuItem exportFasta = new JMenuItem("Export FASTA");
+    exportFasta.addActionListener(new ActionListener(){
+      public void actionPerformed(ActionEvent e)
+      {
+        VCFview.this.setCursor(new Cursor(Cursor.WAIT_CURSOR));
+        //IOUtils.export(entryGroup, vcfFiles, VCFview.this);
+        VCFview.this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+      }
+    });
+    
   }
 
   private static EntryGroup getReference(String reference)
@@ -954,7 +969,10 @@ public class VCFview extends JPanel
       return false;
     
     if(!showNonOverlappings && !isOverlappingFeature(features, basePosition))
-        return false;
+      return false;
+    
+    if(!showNonVariants && record.getAlt().equals("."))
+      return false;
     
     short isSyn = -1;
     markAsNewStop = false;