diff --git a/uk/ac/sanger/artemis/components/FeaturePopup.java b/uk/ac/sanger/artemis/components/FeaturePopup.java
index c4d81feb35fc123f3799ef798f14cc441ba5be66..ad04544fe25afcfddc1eab2478817b5415f578d0 100644
--- a/uk/ac/sanger/artemis/components/FeaturePopup.java
+++ b/uk/ac/sanger/artemis/components/FeaturePopup.java
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  *
- * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/FeaturePopup.java,v 1.2 2004-11-05 14:22:41 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/FeaturePopup.java,v 1.3 2004-12-17 11:32:49 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.components;
@@ -29,8 +29,6 @@ import uk.ac.sanger.artemis.*;
 import uk.ac.sanger.artemis.util.StringVector;
 
 import java.io.*;
-import java.awt.MenuItem;
-import java.awt.CheckboxMenuItem;
 import java.awt.event.*;
 import javax.swing.*;
 
@@ -38,13 +36,12 @@ import javax.swing.*;
  *  FeaturePopup class
  *
  *  @author Kim Rutherford
- *  @version $Id: FeaturePopup.java,v 1.2 2004-11-05 14:22:41 tjc Exp $
+ *  @version $Id: FeaturePopup.java,v 1.3 2004-12-17 11:32:49 tjc Exp $
  *
  **/
 
 public class FeaturePopup extends JPopupMenu 
 {
-
   /**
    *  The reference of the EntryGroup object that was passed to the
    *  constructor.
@@ -90,42 +87,6 @@ public class FeaturePopup extends JPopupMenu
    *  features.
    **/
   private FeatureSegmentVector selection_segments;
-
-  private JCheckBoxMenuItem show_labels_item = null;
-  private JCheckBoxMenuItem one_line_per_entry_item = null;
-  private JCheckBoxMenuItem show_forward_frame_lines_item = null;
-  private JCheckBoxMenuItem show_reverse_frame_lines_item = null;
-  private JCheckBoxMenuItem show_start_codons_item = null;
-  private JCheckBoxMenuItem show_stop_codons_item = null;
-  private JCheckBoxMenuItem show_feature_arrows_item = null;
-  private JCheckBoxMenuItem show_feature_borders_item = null;
-  private JCheckBoxMenuItem frame_features_item = null;
-  private JCheckBoxMenuItem source_features_item = null;
-  private JCheckBoxMenuItem rev_comp_display_item = null;
-  private JCheckBoxMenuItem base_colours_item = null;
-  private JCheckBoxMenuItem correlation_scores_item = null;
-  private JCheckBoxMenuItem show_genes_item = null;
-  private JCheckBoxMenuItem show_sysid_item = null;
-  private JCheckBoxMenuItem show_products_item = null;
-  private JCheckBoxMenuItem show_qualifiers_item = null;
-  private JMenuItem entry_group_menu_item = null;
-  private JMenuItem select_menu_item = null;
-  private JMenuItem add_menu_item = null;
-  private JMenuItem view_menu_item = null;
-  private JMenuItem edit_menu_item = null;
-  private JMenuItem goto_menu_item = null;
-  private JMenuItem write_menu_item = null;
-  private JMenuItem run_menu_item = null;
-  private JMenuItem broadcast_item = null;
-  private JMenuItem raise_feature_item = null;
-  private JMenuItem lower_feature_item = null;
-  private JMenuItem smallest_to_front_item = null;
-  private JMenuItem zoom_to_selection_item = null;
-  private JMenuItem score_cutoffs_item = null;
-  private JMenuItem select_visible_range = null;
-  private JMenuItem save_feature_list_item = null;
-  private JMenuItem select_visible_features = null;
-
   private BasePlotGroup base_plot_group = null;
 
   /**
@@ -152,59 +113,44 @@ public class FeaturePopup extends JPopupMenu
     selection_features = selection.getSelectedFeatures();
     selection_segments = selection.getSelectedSegments();
 
-    makeSubMenus();
+    final JMenuItem action_menus[] = makeSubMenus();
+    JMenuItem feature_display_menus[] = null;
+    JMenuItem feature_list_menus[] = null;
 
-    addGenericItems();
+    if(owner instanceof FeatureDisplay)
+    {
+      feature_display = (FeatureDisplay)owner;
+      feature_display_menus = addFeatureDisplayItems();
+      for(int i = 0; i<feature_display_menus.length; i++)
+        if(!(feature_display_menus[i] instanceof JCheckBoxMenuItem))
+          maybeAdd(feature_display_menus[i]);
+    }
+    else // must be a FeatureList
+    {
+      feature_list = (FeatureList)owner;
+      feature_list_menus = addFeatureListItems();
+      for(int i=0; i<feature_list_menus.length; i++)
+        if(!(feature_list_menus[i] instanceof JCheckBoxMenuItem))
+          maybeAdd(feature_list_menus[i]);
+    }
+    addSeparator();
 
+    for(int i = 0; i<action_menus.length; i++)
+      maybeAdd(action_menus[i]);
+
+    addSeparator();
     if(owner instanceof FeatureDisplay) 
     {
-      feature_display =(FeatureDisplay) owner;
-      addFeatureDisplayItems();
-    } 
+      for(int i = 0; i<feature_display_menus.length; i++)
+        if((feature_display_menus[i] instanceof JCheckBoxMenuItem))
+          maybeAdd(feature_display_menus[i]);
+    }
     else 
     {
-      // must be a FeatureList
-      feature_list =(FeatureList) owner;
-      addFeatureListItems();
+      for(int i=0; i<feature_list_menus.length; i++)
+        if((feature_list_menus[i] instanceof JCheckBoxMenuItem))
+          maybeAdd(feature_list_menus[i]);
     }
-
-    maybeAdd(raise_feature_item);
-    maybeAdd(lower_feature_item);
-    maybeAdd(smallest_to_front_item);
-    maybeAdd(zoom_to_selection_item);
-    maybeAdd(select_visible_range);
-    maybeAdd(select_visible_features);
-    maybeAdd(score_cutoffs_item);
-    maybeAdd(save_feature_list_item);
-    addSeparator();
-    maybeAdd(entry_group_menu_item);
-    maybeAdd(select_menu_item);
-    maybeAdd(goto_menu_item);
-    maybeAdd(view_menu_item);
-    maybeAdd(edit_menu_item);
-    maybeAdd(add_menu_item);
-    maybeAdd(write_menu_item);
-    maybeAdd(run_menu_item);
-    addSeparator();
-    maybeAdd(show_labels_item);
-    maybeAdd(one_line_per_entry_item);
-    maybeAdd(show_forward_frame_lines_item);
-    maybeAdd(show_reverse_frame_lines_item);
-    maybeAdd(show_start_codons_item);
-    maybeAdd(show_stop_codons_item);
-    maybeAdd(show_feature_arrows_item);
-    maybeAdd(show_feature_borders_item);
-    maybeAdd(frame_features_item);
-    maybeAdd(source_features_item);
-    maybeAdd(rev_comp_display_item);
-    maybeAdd(base_colours_item);
-    maybeAdd(correlation_scores_item);
-    maybeAdd(show_genes_item);
-    maybeAdd(show_sysid_item);
-    maybeAdd(show_qualifiers_item);
-    maybeAdd(show_products_item);
-    addSeparator();
-    maybeAdd(broadcast_item);
   }
 
   /**
@@ -227,191 +173,205 @@ public class FeaturePopup extends JPopupMenu
       add(item);
   }
 
-  /**
-   *  Create those menu items that are relevant to all components.
-   **/
-  private void addGenericItems() 
-  {
-    if(selection_features.size() > 0 || selection_segments.size() > 0) {
-
-    }
-  }
-
   /**
    *  Create the Edit, Add and View sub menus.
    **/
-  public void makeSubMenus() 
+  private JMenuItem[] makeSubMenus()
   {
+    final JMenuItem[] action_menus = new JMenuItem[8];
+
     final JFrame frame = owner.getParentFrame();
-    entry_group_menu_item = new EntryGroupMenu(frame, getEntryGroup());
+    action_menus[0] = new EntryGroupMenu(frame, getEntryGroup());
 
-    select_menu_item = new SelectMenu(frame, selection,
+    action_menus[1] = new SelectMenu(frame, selection,
                                       getGotoEventSource(),
                                       getEntryGroup(),
                                       base_plot_group);
 
-    view_menu_item = new ViewMenu(frame, selection,
+    action_menus[2] = new ViewMenu(frame, selection,
                                   getGotoEventSource(),
                                   getEntryGroup(),
                                   base_plot_group);
 
-    goto_menu_item = new GotoMenu(frame, selection,
+    action_menus[3] = new GotoMenu(frame, selection,
                                   getGotoEventSource(),
                                   getEntryGroup());
 
     if(Options.readWritePossible()) 
     {
-      edit_menu_item = new EditMenu(frame, selection,
+      action_menus[4] = new EditMenu(frame, selection,
                                     getGotoEventSource(),
                                     getEntryGroup(),
                                     base_plot_group);
       if(entry_group instanceof SimpleEntryGroup) 
-        add_menu_item = new AddMenu(frame, selection,
+        action_menus[5] = new AddMenu(frame, selection,
                                     getEntryGroup(),
                                     getGotoEventSource(),
                                     base_plot_group);
 
-      write_menu_item = new WriteMenu(frame, selection,
+      action_menus[6] = new WriteMenu(frame, selection,
                                       getEntryGroup());
       if(Options.isUnixHost()) 
-        run_menu_item = new RunMenu(frame, selection);
+        action_menus[7] = new RunMenu(frame, selection);
     }
+    return action_menus;
   }
 
   /**
    *  Create those menu items that are relevant only to FeatureDisplay objects.
    **/
-  private void addFeatureDisplayItems() 
+  private JMenuItem[] addFeatureDisplayItems() 
   {
-    show_start_codons_item = new JCheckBoxMenuItem("Start Codons");
-    show_start_codons_item.setState(feature_display.getShowStartCodons());
-    show_start_codons_item.addItemListener(new ItemListener()
+    final JMenuItem[] feature_display_menus = new JMenuItem[19];
+
+    feature_display_menus[0] = new JCheckBoxMenuItem("Start Codons");
+    ((JCheckBoxMenuItem)feature_display_menus[0]).setState(
+                               feature_display.getShowStartCodons());
+    feature_display_menus[0].addItemListener(new ItemListener()
     {
       public void itemStateChanged(ItemEvent event) 
       {
-        feature_display.setShowStartCodons(show_start_codons_item.getState());
+        feature_display.setShowStartCodons(
+                   ((JCheckBoxMenuItem)feature_display_menus[0]).getState());
       }
     });
 
-    show_stop_codons_item = new JCheckBoxMenuItem("Stop Codons");
-    show_stop_codons_item.setState(feature_display.getShowStopCodons());
-    show_stop_codons_item.addItemListener(new ItemListener() 
+    feature_display_menus[1] = new JCheckBoxMenuItem("Stop Codons");
+    ((JCheckBoxMenuItem)feature_display_menus[1]).setState(
+                               feature_display.getShowStopCodons());
+    feature_display_menus[1].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent event) 
       {
-        feature_display.setShowStopCodons(show_stop_codons_item.getState());
+        feature_display.setShowStopCodons(
+                  ((JCheckBoxMenuItem)feature_display_menus[1]).getState());
       }
     });
 
-    show_feature_arrows_item = new JCheckBoxMenuItem("Feature Arrows");
-    show_feature_arrows_item.setState(feature_display.getShowFeatureArrows());
-    show_feature_arrows_item.addItemListener(new ItemListener() 
+    feature_display_menus[2] = new JCheckBoxMenuItem("Feature Arrows");
+    ((JCheckBoxMenuItem)feature_display_menus[2]).setState(
+                               feature_display.getShowFeatureArrows());
+    feature_display_menus[2].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent event) 
       {
-        feature_display.setShowFeatureArrows(show_feature_arrows_item.getState());
+        feature_display.setShowFeatureArrows(
+                  ((JCheckBoxMenuItem)feature_display_menus[2]).getState());
       }
     });
 
-    show_feature_borders_item = new JCheckBoxMenuItem("Feature Borders");
-    show_feature_borders_item.setState(feature_display.getShowFeatureBorders());
-    show_feature_borders_item.addItemListener(new ItemListener() 
+    feature_display_menus[3] = new JCheckBoxMenuItem("Feature Borders");
+    ((JCheckBoxMenuItem)feature_display_menus[3]).setState(
+                                   feature_display.getShowFeatureBorders());
+    feature_display_menus[3].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent event) 
       {
-        feature_display.setShowFeatureBorders(show_feature_borders_item.getState());
+        feature_display.setShowFeatureBorders(
+                  ((JCheckBoxMenuItem)feature_display_menus[3]).getState());
       }
     });
 
-    show_labels_item = new JCheckBoxMenuItem("Feature Labels");
-    show_labels_item.setState(feature_display.getShowLabels());
-    show_labels_item.addItemListener(new ItemListener() 
+    feature_display_menus[4] = new JCheckBoxMenuItem("Feature Labels");
+    ((JCheckBoxMenuItem)feature_display_menus[4]).setState(feature_display.getShowLabels());
+    feature_display_menus[4].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_display.setShowLabels(show_labels_item.getState());
+        feature_display.setShowLabels(
+                  ((JCheckBoxMenuItem)feature_display_menus[4]).getState());
       }
     });
 
-    one_line_per_entry_item = new JCheckBoxMenuItem("One Line Per Entry");
-    one_line_per_entry_item.setState(feature_display.getOneLinePerEntryFlag());
-    one_line_per_entry_item.addItemListener(new ItemListener() 
+    feature_display_menus[5] = new JCheckBoxMenuItem("One Line Per Entry");
+    ((JCheckBoxMenuItem)feature_display_menus[5]).setState(
+                                 feature_display.getOneLinePerEntryFlag());
+    feature_display_menus[5].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        final boolean new_state = one_line_per_entry_item.getState();
+        final boolean new_state = 
+                  ((JCheckBoxMenuItem)feature_display_menus[5]).getState();
         if(new_state && getEntryGroup().size() > 8) 
           feature_display.setShowLabels(false);
         feature_display.setOneLinePerEntry(new_state);
       }
     });
 
-    show_forward_frame_lines_item =
-      new JCheckBoxMenuItem("Forward Frame Lines");
-    show_forward_frame_lines_item.setState(feature_display.getShowForwardFrameLines());
-    show_forward_frame_lines_item.addItemListener(new ItemListener() 
+    feature_display_menus[6] = new JCheckBoxMenuItem("Forward Frame Lines");
+    ((JCheckBoxMenuItem)feature_display_menus[6]).setState(
+                                feature_display.getShowForwardFrameLines());
+    feature_display_menus[6].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_display.setShowForwardFrameLines(show_forward_frame_lines_item.getState());
+        feature_display.setShowForwardFrameLines(
+                  ((JCheckBoxMenuItem)feature_display_menus[6]).getState());
       }
     });
 
-    show_reverse_frame_lines_item =
-      new JCheckBoxMenuItem("Reverse Frame Lines");
-    show_reverse_frame_lines_item.setState(feature_display.getShowReverseFrameLines());
-    show_reverse_frame_lines_item.addItemListener(new ItemListener() 
+    feature_display_menus[7] = new JCheckBoxMenuItem("Reverse Frame Lines");
+    ((JCheckBoxMenuItem)feature_display_menus[7]).setState(
+                               feature_display.getShowReverseFrameLines());
+    feature_display_menus[7].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_display.setShowReverseFrameLines(show_reverse_frame_lines_item.getState());
+        feature_display.setShowReverseFrameLines(
+                  ((JCheckBoxMenuItem)feature_display_menus[7]).getState());
       }
     });
 
-    frame_features_item = new JCheckBoxMenuItem("All Features On Frame Lines");
-    frame_features_item.setState(feature_display.getFrameFeaturesFlag());
-    frame_features_item.addItemListener(new ItemListener() 
+    feature_display_menus[8] = new JCheckBoxMenuItem("All Features On Frame Lines");
+    ((JCheckBoxMenuItem)feature_display_menus[8]).setState(
+                                            feature_display.getFrameFeaturesFlag());
+    feature_display_menus[8].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_display.setFrameFeaturesFlag(frame_features_item.getState());
+        feature_display.setFrameFeaturesFlag(
+                  ((JCheckBoxMenuItem)feature_display_menus[8]).getState());
       }
     });
 
-    source_features_item = new JCheckBoxMenuItem("Show Source Features");
-    source_features_item.setState(feature_display.getShowSourceFeatures());
-    source_features_item.addItemListener(new ItemListener() 
+    feature_display_menus[9] = new JCheckBoxMenuItem("Show Source Features");
+    ((JCheckBoxMenuItem)feature_display_menus[9]).setState(
+                                    feature_display.getShowSourceFeatures());
+    feature_display_menus[9].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_display.setShowSourceFeatures(source_features_item.getState());
+        feature_display.setShowSourceFeatures(
+                  ((JCheckBoxMenuItem)feature_display_menus[9]).getState());
       }
     });
 
-    rev_comp_display_item = new JCheckBoxMenuItem("Flip Display");
- 
-    rev_comp_display_item.setState(feature_display.isRevCompDisplay());
-    rev_comp_display_item.addItemListener(new ItemListener()
+    feature_display_menus[10] = new JCheckBoxMenuItem("Flip Display");
+    ((JCheckBoxMenuItem)feature_display_menus[10]).setState(
+                                  feature_display.isRevCompDisplay());
+    feature_display_menus[10].addItemListener(new ItemListener()
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_display.setRevCompDisplay(rev_comp_display_item.getState());
+        feature_display.setRevCompDisplay(
+                  ((JCheckBoxMenuItem)feature_display_menus[10]).getState());
       }
     });
 
-    base_colours_item = new JCheckBoxMenuItem("Colourise Bases");
-    base_colours_item.setState(feature_display.getShowBaseColours());
-    base_colours_item.addItemListener(new ItemListener() 
+    feature_display_menus[11] = new JCheckBoxMenuItem("Colourise Bases");
+    ((JCheckBoxMenuItem)feature_display_menus[11]).setState(
+                                   feature_display.getShowBaseColours());
+    feature_display_menus[11].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_display.setShowBaseColours(base_colours_item.getState());
+        feature_display.setShowBaseColours(
+                  ((JCheckBoxMenuItem)feature_display_menus[11]).getState());
       }
     });
 
-    smallest_to_front_item =
-      new JMenuItem("Smallest Features In Front");
-    smallest_to_front_item.addActionListener(new ActionListener() 
+    feature_display_menus[12] = new JMenuItem("Smallest Features In Front");
+    feature_display_menus[12].addActionListener(new ActionListener() 
     {
       public void actionPerformed(ActionEvent e) 
       {
@@ -422,9 +382,8 @@ public class FeaturePopup extends JPopupMenu
       }
     });
 
-    score_cutoffs_item = new JMenuItem("Set Score Cutoffs ...");
-
-    score_cutoffs_item.addActionListener(new ActionListener() 
+    feature_display_menus[13] = new JMenuItem("Set Score Cutoffs ...");
+    feature_display_menus[13].addActionListener(new ActionListener() 
     {
       public void actionPerformed(ActionEvent e) 
       {
@@ -457,8 +416,8 @@ public class FeaturePopup extends JPopupMenu
 
     if(selection_features.size() > 0 || selection_segments.size() > 0) 
     {
-      raise_feature_item = new JMenuItem("Raise Selected Features");
-      raise_feature_item.addActionListener(new ActionListener() 
+      feature_display_menus[14] = new JMenuItem("Raise Selected Features");
+      feature_display_menus[14].addActionListener(new ActionListener() 
       {
         public void actionPerformed(ActionEvent event) 
         {
@@ -466,8 +425,8 @@ public class FeaturePopup extends JPopupMenu
         }
       });
 
-      lower_feature_item = new JMenuItem("Lower Selected Features");
-      lower_feature_item.addActionListener(new ActionListener() 
+      feature_display_menus[15] = new JMenuItem("Lower Selected Features");
+      feature_display_menus[15].addActionListener(new ActionListener() 
       {
         public void actionPerformed(ActionEvent event) 
         {
@@ -478,8 +437,8 @@ public class FeaturePopup extends JPopupMenu
 
     if(!selection.isEmpty()) 
     {
-      zoom_to_selection_item = new JMenuItem("Zoom to Selection");
-      zoom_to_selection_item.addActionListener(new ActionListener() 
+      feature_display_menus[16] = new JMenuItem("Zoom to Selection");
+      feature_display_menus[16].addActionListener(new ActionListener() 
       {
         public void actionPerformed(ActionEvent event) 
         {
@@ -488,10 +447,8 @@ public class FeaturePopup extends JPopupMenu
       });
     }
 
-
-    select_visible_range =
-      new JMenuItem("Select Visible Range");
-    select_visible_range.addActionListener(new ActionListener() 
+    feature_display_menus[17] = new JMenuItem("Select Visible Range");
+    feature_display_menus[17].addActionListener(new ActionListener() 
     {
       public void actionPerformed(ActionEvent e) 
       {
@@ -499,24 +456,28 @@ public class FeaturePopup extends JPopupMenu
       }
     });
 
-    select_visible_features =
-      new JMenuItem("Select Visible Features");
-    select_visible_features.addActionListener(new ActionListener() {
-      public void actionPerformed(ActionEvent e) {
+    feature_display_menus[18] = new JMenuItem("Select Visible Features");
+    feature_display_menus[18].addActionListener(new ActionListener() 
+    {
+      public void actionPerformed(ActionEvent e) 
+      {
         selection.set(feature_display.getCurrentVisibleFeatures());
       }
     });
+
+    return feature_display_menus;
   }
 
   /**
    *  Create those menu items that are relevant only to FeatureList objects.
    **/
-  private void addFeatureListItems() 
+  private JMenuItem[] addFeatureListItems() 
   {
+    final JMenuItem feature_list_menus[] = new JMenuItem[6];
     if(Options.getOptions().readWritePossible()) 
     {
-      save_feature_list_item = new JMenuItem("Save List To File ...");
-      save_feature_list_item.addActionListener(new ActionListener() 
+      feature_list_menus[0] = new JMenuItem("Save List To File ...");
+      feature_list_menus[0].addActionListener(new ActionListener() 
       {
         public void actionPerformed(ActionEvent e) 
         {
@@ -525,73 +486,82 @@ public class FeaturePopup extends JPopupMenu
       });
     }
 
-    correlation_scores_item = new JCheckBoxMenuItem("Show Correlation Scores");
-    correlation_scores_item.setState(feature_list.getCorrelationScores());
-    correlation_scores_item.addItemListener(new ItemListener() 
+    feature_list_menus[1] = new JCheckBoxMenuItem("Show Correlation Scores");
+    ((JCheckBoxMenuItem)feature_list_menus[1]).setState(
+                                        feature_list.getCorrelationScores());
+    feature_list_menus[1].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_list.setCorrelationScores(correlation_scores_item.getState());
+        feature_list.setCorrelationScores(
+                      ((JCheckBoxMenuItem)feature_list_menus[1]).getState());
       }
     });
 
-    show_genes_item = new JCheckBoxMenuItem("Show Gene Names");
-    show_genes_item.setState(feature_list.getShowGenes());
-    show_genes_item.addItemListener(new ItemListener() 
+    feature_list_menus[2] = new JCheckBoxMenuItem("Show Gene Names");
+    ((JCheckBoxMenuItem)feature_list_menus[2]).setState(feature_list.getShowGenes());
+    feature_list_menus[2].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        if(show_sysid_item.getState() && show_genes_item.getState())
+        boolean show_sysid = ((JCheckBoxMenuItem)feature_list_menus[3]).getState();
+        boolean show_genes = ((JCheckBoxMenuItem)feature_list_menus[2]).getState();
+        if(show_sysid && show_genes)
         {
-          show_sysid_item.setState(false);
-          feature_list.setShowSystematicID(show_sysid_item.getState());
+          ((JCheckBoxMenuItem)feature_list_menus[3]).setState(false);
+          feature_list.setShowSystematicID(false);
         }
 
-        feature_list.setShowGenes(show_genes_item.getState());
+        feature_list.setShowGenes(show_genes);
       }
     });
 
-    show_sysid_item = new JCheckBoxMenuItem("Show Systematic ID");
-    show_sysid_item.setState(feature_list.getShowSysID());
-    show_sysid_item.addItemListener(new ItemListener()
+    feature_list_menus[3] = new JCheckBoxMenuItem("Show Systematic ID");
+    ((JCheckBoxMenuItem)feature_list_menus[3]).setState(feature_list.getShowSysID());
+    feature_list_menus[3].addItemListener(new ItemListener()
     {
       public void itemStateChanged(ItemEvent e)
       {
-
-        if(show_genes_item.getState() && show_sysid_item.getState())
+        boolean show_sysid = ((JCheckBoxMenuItem)feature_list_menus[3]).getState();
+        boolean show_genes = ((JCheckBoxMenuItem)feature_list_menus[2]).getState();
+        if(show_genes && show_sysid)
         {
-          show_genes_item.setState(false);
-          feature_list.setShowGenes(show_genes_item.getState());
+          ((JCheckBoxMenuItem)feature_list_menus[2]).setState(false);
+          feature_list.setShowGenes(false);
         }
 
-        feature_list.setShowSystematicID(show_sysid_item.getState());
+        feature_list.setShowSystematicID(show_sysid);
       }
     });
 
-    show_products_item = new JCheckBoxMenuItem("Show Products");
-    show_products_item.setState(feature_list.getShowProducts());
-    show_products_item.addItemListener(new ItemListener() 
+    feature_list_menus[4] = new JCheckBoxMenuItem("Show Products");
+    ((JCheckBoxMenuItem)feature_list_menus[4]).setState(feature_list.getShowProducts());
+    feature_list_menus[4].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        if(show_products_item.getState()) 
+        boolean show_products = ((JCheckBoxMenuItem)feature_list_menus[4]).getState();
+        if(show_products) 
           feature_list.setShowQualifiers(false);
         
-        feature_list.setShowProducts(show_products_item.getState());
+        feature_list.setShowProducts(show_products);
       }
     });
     
-    show_qualifiers_item = new JCheckBoxMenuItem("Show Qualifiers");
-    show_qualifiers_item.setState(feature_list.getShowQualifiers());
-    show_qualifiers_item.addItemListener(new ItemListener() 
+    feature_list_menus[5] = new JCheckBoxMenuItem("Show Qualifiers");
+    ((JCheckBoxMenuItem)feature_list_menus[5]).setState(feature_list.getShowQualifiers());
+    feature_list_menus[5].addItemListener(new ItemListener() 
     {
       public void itemStateChanged(ItemEvent e) 
       {
-        feature_list.setShowQualifiers(show_qualifiers_item.getState());
-        if(show_qualifiers_item.getState()) 
+        boolean show_qualifiers = ((JCheckBoxMenuItem)feature_list_menus[5]).getState();
+        feature_list.setShowQualifiers(show_qualifiers);
+        if(show_qualifiers) 
           feature_list.setShowProducts(false);
       }
     });
+    
+    return feature_list_menus;
   }
 
   /**
@@ -732,52 +702,4 @@ public class FeaturePopup extends JPopupMenu
     return goto_event_source;
   }
 
-  /**
-   *  Return a new CheckboxMenuItem unless the VM is 1.2 or worse(ie. 1.3 or
-   *  1.4) on GNU/Linux, in which case return a new ArtemisCheckboxMenuItem
-   **/
-  private MenuItem makeCheckboxMenuItem(final String item_name) 
-  {
-    if(Options.getOptions().isBuggyLinuxVM() &&
-        Options.getOptions().getPropertyTruthValue("buggy_linux_vm_fix")) 
-      return new ArtemisCheckboxMenuItem(item_name);
-    else 
-      return new CheckboxMenuItem(item_name);
-  }
-
-  /**
-   *  Add a ItemListener to a ArtemisCheckboxMenuItem or a CheckboxMenuItem.
-   **/
-  private void addMenuItemListener(final MenuItem menu_item,
-                                    final ItemListener listener)
-  {
-    if(menu_item instanceof ArtemisCheckboxMenuItem) 
-     ((ArtemisCheckboxMenuItem)menu_item).addItemListener(listener);
-    else 
-     ((CheckboxMenuItem)menu_item).addItemListener(listener);
-  }
-
-  /**
-   *  Set the state of a ArtemisCheckboxMenuItem or a CheckboxMenuItem.
-   **/
-  private void setCheckboxMenuItemState(final MenuItem menu_item,
-                                         final boolean state) 
-  {
-    if(menu_item instanceof ArtemisCheckboxMenuItem) 
-     ((ArtemisCheckboxMenuItem)menu_item).setState(state);
-    else 
-     ((CheckboxMenuItem)menu_item).setState(state);
-  }
-
-  /**
-   *  Get the state of a ArtemisCheckboxMenuItem or a CheckboxMenuItem.
-   **/
-  private boolean getCheckboxMenuItemState(final MenuItem menu_item) 
-  {
-    if(menu_item instanceof ArtemisCheckboxMenuItem) 
-      return((ArtemisCheckboxMenuItem)menu_item).getState();
-    else 
-      return((CheckboxMenuItem)menu_item).getState();
-  }
-
 }