diff --git a/uk/ac/sanger/artemis/components/genebuilder/gff/AddButton.java b/uk/ac/sanger/artemis/components/genebuilder/gff/AddButton.java
new file mode 100644
index 0000000000000000000000000000000000000000..9b6d8bad42050888dcbb7361fdea20be88f67d64
--- /dev/null
+++ b/uk/ac/sanger/artemis/components/genebuilder/gff/AddButton.java
@@ -0,0 +1,57 @@
+/* AddButton
+ * This file is part of Artemis
+ *
+ * Copyright (C) 2009  Genome Research Limited
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ */
+package uk.ac.sanger.artemis.components.genebuilder.gff;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.SwingConstants;
+import javax.swing.border.BevelBorder;
+import javax.swing.border.SoftBevelBorder;
+
+class AddButton extends JButton
+{
+  private static final long serialVersionUID = 1L;
+
+  public AddButton(ActionListener addAction, String tt)
+  {
+    super("+");
+
+    setToolTipText(tt);
+    setVerticalTextPosition(SwingConstants.TOP);
+    setHorizontalTextPosition(SwingConstants.LEFT);
+
+    setForeground(new Color(0, 100, 0));
+    setFont(getFont().deriveFont(Font.BOLD, 16.f));
+
+    setBorder(new SoftBevelBorder(BevelBorder.RAISED));
+    setOpaque(false);
+
+    Dimension size = new Dimension(16, 20);
+    setPreferredSize(size);
+    setMaximumSize(size);
+
+    addActionListener(addAction);
+  }
+}
diff --git a/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java b/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java
index 0efaafecbed5f27aed18e1f2bfd37eac09d60140..da00b61a398184ae940f3e24df7c81ed4faf61e9 100644
--- a/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java
+++ b/uk/ac/sanger/artemis/components/genebuilder/gff/PropertiesPanel.java
@@ -235,7 +235,15 @@ public class PropertiesPanel extends JPanel
       gridPanel.add(primaryNameTextField, c);
     }
     
-    AddSynonymButton addSynonymButton = new AddSynonymButton("Add Synonym");
+    ActionListener addAction = new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        addSynonym();
+      }  
+    };
+    
+    AddButton addSynonymButton = new AddButton(addAction, "Add Synonym");
     c.gridx = 4;
     gridPanel.add(addSynonymButton, c);
   }
@@ -885,7 +893,14 @@ public class PropertiesPanel extends JPanel
         syn.setEnabled(false);
       synBox.add(syn);
       
-      RemoveSynonymButton remove = new RemoveSynonymButton(qualifier.getName(), val);
+      ActionListener removeAction = new ActionListener()
+      {
+        public void actionPerformed(ActionEvent e)
+        {
+          removeSynonym(qualifier.getName(), val);
+        }  
+      };
+      RemoveButton remove = new RemoveButton(removeAction);
       synBox.add(remove);
     }
     c.gridwidth = GridBagConstraints.REMAINDER;
@@ -943,66 +958,4 @@ public class PropertiesPanel extends JPanel
         feature.getKey().getKeyString()));
   }
 
-  protected class RemoveSynonymButton extends JButton 
-  {
-    private static final long serialVersionUID = 1L;
-    
-    public RemoveSynonymButton(final String name, final String val)
-    {
-      super("X");
-
-      setVerticalTextPosition(SwingConstants.TOP);
-      setHorizontalTextPosition(SwingConstants.LEFT);
-
-      setForeground(Color.red);
-      setFont(getFont().deriveFont(Font.BOLD, 9.f));
-      setBorder(BorderFactory.createEmptyBorder());
-      setOpaque(false);
-      
-      Dimension size = new Dimension(9,20);
-      setPreferredSize(size);
-      setMaximumSize(size);
-
-      addActionListener(new ActionListener()
-      {
-        public void actionPerformed(ActionEvent e)
-        {
-          removeSynonym(name, val);
-        }  
-      });
-    }
-  }
-  
-  protected class AddSynonymButton extends JButton 
-  {
-    private static final long serialVersionUID = 1L;
-    
-    public AddSynonymButton(String tt)
-    {
-      super("+");
-
-      setToolTipText(tt);
-      setVerticalTextPosition(SwingConstants.TOP);
-      setHorizontalTextPosition(SwingConstants.LEFT);
-
-      setForeground(new Color(0,100,0));
-      setFont(getFont().deriveFont(Font.BOLD, 16.f));
-      
-      setBorder(new SoftBevelBorder ( BevelBorder.RAISED ));
-      setOpaque(false);
-      
-      Dimension size = new Dimension(16,20);
-      setPreferredSize(size);
-      setMaximumSize(size);
-
-      addActionListener(new ActionListener()
-      {
-        public void actionPerformed(ActionEvent e)
-        {
-          addSynonym();
-        }  
-      });
-    }
-  }
-
 }
\ No newline at end of file
diff --git a/uk/ac/sanger/artemis/components/genebuilder/gff/RemoveButton.java b/uk/ac/sanger/artemis/components/genebuilder/gff/RemoveButton.java
new file mode 100644
index 0000000000000000000000000000000000000000..180adab01425d4f2869577422bdc910da249530b
--- /dev/null
+++ b/uk/ac/sanger/artemis/components/genebuilder/gff/RemoveButton.java
@@ -0,0 +1,55 @@
+/* RemoveButton
+ * This file is part of Artemis
+ *
+ * Copyright (C) 2009  Genome Research Limited
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ */
+
+package uk.ac.sanger.artemis.components.genebuilder.gff;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.event.ActionListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.SwingConstants;
+
+class RemoveButton extends JButton
+{
+  private static final long serialVersionUID = 1L;
+
+  public RemoveButton(ActionListener removeAction)
+  {
+    super("X");
+
+    setVerticalTextPosition(SwingConstants.TOP);
+    setHorizontalTextPosition(SwingConstants.LEFT);
+
+    setForeground(Color.red);
+    setFont(getFont().deriveFont(Font.BOLD, 9.f));
+    setBorder(BorderFactory.createEmptyBorder());
+    setOpaque(false);
+
+    Dimension size = new Dimension(9, 20);
+    setPreferredSize(size);
+    setMaximumSize(size);
+
+    addActionListener(removeAction);
+  }
+}
\ No newline at end of file