diff --git a/uk/ac/sanger/artemis/AlignMatchVector.java b/uk/ac/sanger/artemis/AlignMatchVector.java
index 3357a0356809ae1a5dff095dc69e4c52a0a4c6b3..de26c6d054a3a01c97b2eb1e272669c9a3f4d1e2 100644
--- a/uk/ac/sanger/artemis/AlignMatchVector.java
+++ b/uk/ac/sanger/artemis/AlignMatchVector.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/AlignMatchVector.java,v 1.1 2004-06-09 09:44:07 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/AlignMatchVector.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  */
 
 package uk.ac.sanger.artemis;
@@ -34,7 +34,7 @@ import java.util.Collections;
  *  This class is a Vector of AlignMatch objects.
  *
  *  @author Kim Rutherford <kmr@sanger.ac.uk>
- *  @version $Id: AlignMatchVector.java,v 1.1 2004-06-09 09:44:07 tjc Exp $
+ *  @version $Id: AlignMatchVector.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  **/
 
 public class AlignMatchVector {
@@ -65,7 +65,7 @@ public class AlignMatchVector {
    *  Performs the same function as Vector.elementAt ()
    **/
   public AlignMatch elementAt (int index) {
-    return (AlignMatch) vector.elementAt (index);
+    return (AlignMatch) vector.get(index);
   }
 
   /**
@@ -90,7 +90,7 @@ public class AlignMatchVector {
    *  Performs the same function as Vector.removeAllElements ()
    **/
   public void removeAllElements () {
-    vector.removeAllElements ();
+    vector.clear ();
   }
 
   /**
diff --git a/uk/ac/sanger/artemis/FeatureSegmentVector.java b/uk/ac/sanger/artemis/FeatureSegmentVector.java
index e9956e68367d6d425aa93694e23837aa8068ac1a..68765ea951d3978b9cfa34dc657b5de1c9c4f46f 100644
--- a/uk/ac/sanger/artemis/FeatureSegmentVector.java
+++ b/uk/ac/sanger/artemis/FeatureSegmentVector.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/FeatureSegmentVector.java,v 1.1 2004-06-09 09:44:48 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/FeatureSegmentVector.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  */
 
 package uk.ac.sanger.artemis;
@@ -31,7 +31,7 @@ import uk.ac.sanger.artemis.util.FastVector;
  *  This class implements a Vector of FeatureSegment objects.
  *
  *  @author Kim Rutherford
- *  @version $Id: FeatureSegmentVector.java,v 1.1 2004-06-09 09:44:48 tjc Exp $
+ *  @version $Id: FeatureSegmentVector.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  *
  **/
 
@@ -61,7 +61,7 @@ public class FeatureSegmentVector {
    *  Performs the same function as Vector.insertElementAt ()
    **/
   public void insertElementAt (FeatureSegment segment, int index) {
-    vector.insertElementAt (segment, index);
+    vector.add (index, segment);
   }
 
   /**
@@ -75,14 +75,14 @@ public class FeatureSegmentVector {
    *  Performs the same function as Vector.elementAt ()
    **/
   public FeatureSegment elementAt (int index) {
-    return (FeatureSegment) vector.elementAt (index);
+    return (FeatureSegment) vector.get(index);
   }
 
   /**
    *  Performs the same function as Vector.lastElement ()
    **/
   public FeatureSegment lastElement () {
-    return (FeatureSegment) vector.lastElement ();
+    return (FeatureSegment) vector.lastElement();
   }
 
   /**
@@ -114,14 +114,14 @@ public class FeatureSegmentVector {
    *  Performs the same function as Vector.removeAllElement ()
    **/
   public void removeAllElements () {
-    vector.removeAllElements ();
+    vector.clear ();
   }
 
   /**
    *  Performs the same function as Vector.removeElementAt ()
    **/
   public void removeElementAt (int index) {
-    vector.removeElementAt (index);
+    vector.remove (index);
   }
 
   /**
@@ -135,7 +135,7 @@ public class FeatureSegmentVector {
    *  Add a feature to the end of the Vector.
    **/
   public void addElementAtEnd (FeatureSegment segment) {
-    vector.insertElementAt (segment, size ());
+    vector.add (size(), segment);
   }
 
   /**
diff --git a/uk/ac/sanger/artemis/FeatureVector.java b/uk/ac/sanger/artemis/FeatureVector.java
index c113240cadef31f60fc5b4d3c7e36012775d3b94..99ae0deb4d382d5416f3f2471410948a13d6cc18 100644
--- a/uk/ac/sanger/artemis/FeatureVector.java
+++ b/uk/ac/sanger/artemis/FeatureVector.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/FeatureVector.java,v 1.1 2004-06-09 09:44:49 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/FeatureVector.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  */
 
 package uk.ac.sanger.artemis;
@@ -33,7 +33,7 @@ import java.util.*;
  *  This class implements a Vector of Feature objects.
  *
  *  @author Kim Rutherford
- *  @version $Id: FeatureVector.java,v 1.1 2004-06-09 09:44:49 tjc Exp $
+ *  @version $Id: FeatureVector.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  *
  **/
 
@@ -63,7 +63,7 @@ public class FeatureVector {
    *  Performs the same function as Vector.elementAt ()
    */
   public Feature elementAt (int index) {
-    return (Feature) vector.elementAt (index);
+    return (Feature) vector.get(index);
   }
 
   /**
@@ -105,21 +105,21 @@ public class FeatureVector {
    *  Performs the same function as Vector.removeAllElement ()
    **/
   public void removeAllElements () {
-    vector.removeAllElements ();
+    vector.clear ();
   }
 
   /**
    *  Performs the same function as Vector.removeElementAt ()
    **/
   public void removeElementAt(int index) {
-    vector.removeElementAt (index);
+    vector.remove (index);
   }
 
   /**
    *  Performs the same function as Vector.insertElementAt ()
    **/
   public final void insertElementAt (Feature feature, int index) {
-    vector.insertElementAt (feature, index);
+    vector.add (index, feature);
   }
 
   /**
diff --git a/uk/ac/sanger/artemis/components/KeyChoice.java b/uk/ac/sanger/artemis/components/KeyChoice.java
index 190df9575d820b7fca04437e6114cad489d3924e..a9de6e15629fd439ea7588cbb2d47d2c3762b5ba 100644
--- a/uk/ac/sanger/artemis/components/KeyChoice.java
+++ b/uk/ac/sanger/artemis/components/KeyChoice.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/KeyChoice.java,v 1.2 2005-02-17 14:18:38 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/KeyChoice.java,v 1.3 2006-08-09 16:35:31 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.components;
@@ -41,7 +41,7 @@ import javax.swing.*;
  *  This component is a Choice component that shows the possible feature keys.
  *
  *  @author Kim Rutherford
- *  @version $Id: KeyChoice.java,v 1.2 2005-02-17 14:18:38 tjc Exp $
+ *  @version $Id: KeyChoice.java,v 1.3 2006-08-09 16:35:31 tjc Exp $
  **/
 public class KeyChoice extends JPanel {
   /**
@@ -140,7 +140,7 @@ public class KeyChoice extends JPanel {
     }
 
     for (int i = 0 ; i < keys.size () ; ++i) {
-      key_chooser.addItem (keys.elementAt (i).toString ());
+      key_chooser.addItem ( ((Key)keys.get(i)).toString ());
     }
 
     if (keyIndex (default_key) != -1) {
diff --git a/uk/ac/sanger/artemis/components/SelectMenu.java b/uk/ac/sanger/artemis/components/SelectMenu.java
index 7f7acdc1122c006c5d4978e9fd41f3caef27d5df..7a8dcae44b3f93757ff1fa510b8d8033e2a820da 100644
--- a/uk/ac/sanger/artemis/components/SelectMenu.java
+++ b/uk/ac/sanger/artemis/components/SelectMenu.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/SelectMenu.java,v 1.9 2006-01-17 16:05:05 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/SelectMenu.java,v 1.10 2006-08-09 16:35:31 tjc Exp $
  **/
 
 package uk.ac.sanger.artemis.components;
@@ -50,7 +50,7 @@ import javax.swing.*;
  *  "Select by key".
  *
  *  @author Kim Rutherford
- *  @version $Id: SelectMenu.java,v 1.9 2006-01-17 16:05:05 tjc Exp $
+ *  @version $Id: SelectMenu.java,v 1.10 2006-08-09 16:35:31 tjc Exp $
  **/
 
 public class SelectMenu extends SelectionMenu 
@@ -643,7 +643,7 @@ public class SelectMenu extends SelectionMenu
     clearSelection ();
 
     for (int i = 0 ; i < seen_keys.size () ; ++i) {
-      selectByKey (seen_keys.elementAt (i));
+      selectByKey ((Key)seen_keys.get(i));
     }
   }
 
diff --git a/uk/ac/sanger/artemis/io/DocumentEntryAutosaveThread.java b/uk/ac/sanger/artemis/io/DocumentEntryAutosaveThread.java
index f56bb56b14c81be9c6877b4e11f3debf27bb61c0..d89ec5f5ec3219f699e01a54d0efe7d34ae4c07b 100644
--- a/uk/ac/sanger/artemis/io/DocumentEntryAutosaveThread.java
+++ b/uk/ac/sanger/artemis/io/DocumentEntryAutosaveThread.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/io/DocumentEntryAutosaveThread.java,v 1.4 2006-03-22 14:03:35 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/io/DocumentEntryAutosaveThread.java,v 1.5 2006-08-09 16:35:31 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.io;
@@ -33,7 +33,7 @@ import java.io.*;
  *  called #entry_name# every 120 seconds.
  *
  *  @author Kim Rutherford <kmr@sanger.ac.uk>
- *  @version $Id: DocumentEntryAutosaveThread.java,v 1.4 2006-03-22 14:03:35 tjc Exp $
+ *  @version $Id: DocumentEntryAutosaveThread.java,v 1.5 2006-08-09 16:35:31 tjc Exp $
  **/
 
 public class DocumentEntryAutosaveThread extends Thread {
@@ -62,9 +62,9 @@ public class DocumentEntryAutosaveThread extends Thread {
     boolean have_saved = false;
 
     try {
-      // sleep for 15 seconds before starting - there is no point in attempting
+      // sleep for 120 seconds before starting - there is no point in attempting
       // to save straight away
-      Thread.sleep (15000);
+      Thread.sleep (120000);
     } catch (InterruptedException _) {
     }
 
diff --git a/uk/ac/sanger/artemis/io/Key.java b/uk/ac/sanger/artemis/io/Key.java
index 5c4049d5a663538325f9d436f7477bedc346bb9d..7ba2741dde37bc368d52518c5f0e485bdcfef169 100644
--- a/uk/ac/sanger/artemis/io/Key.java
+++ b/uk/ac/sanger/artemis/io/Key.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/io/Key.java,v 1.1 2004-06-09 09:49:43 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/io/Key.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.io;
@@ -32,7 +32,7 @@ import uk.ac.sanger.artemis.util.*;
  *  with a limited number of possible values.
  *
  *  @author Kim Rutherford
- *  @version $Id: Key.java,v 1.1 2004-06-09 09:49:43 tjc Exp $
+ *  @version $Id: Key.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  **/
 
 public class Key 
@@ -88,14 +88,11 @@ public class Key
   public boolean equals (final Object test_object) 
   {
     if(test_object instanceof String) 
-      return getKeyString ().equals ((String) test_object);
+      return key_string.equals(test_object);
+    else if(test_object instanceof Key) 
+      return key_string.equals (((Key) test_object).getKeyString ());
     else 
-    {
-      if(test_object instanceof Key) 
-        return getKeyString ().equals (((Key) test_object).getKeyString ());
-      else 
-        return false;
-    }
+      return false;
   }
 
   /**
diff --git a/uk/ac/sanger/artemis/io/KeyVector.java b/uk/ac/sanger/artemis/io/KeyVector.java
index 45637cfc1196e2fa8f4e5f524e0e0dad44817833..95aa4555ee144967888a735b5f741b4dfcf8d2c8 100644
--- a/uk/ac/sanger/artemis/io/KeyVector.java
+++ b/uk/ac/sanger/artemis/io/KeyVector.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/io/KeyVector.java,v 1.1 2004-06-09 09:49:45 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/io/KeyVector.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.io;
@@ -31,91 +31,32 @@ import uk.ac.sanger.artemis.util.FastVector;
  *  This class implements a Vector of Key objects.
  *
  *  @author Kim Rutherford
- *  @version $Id: KeyVector.java,v 1.1 2004-06-09 09:49:45 tjc Exp $
+ *  @version $Id: KeyVector.java,v 1.2 2006-08-09 16:35:31 tjc Exp $
  **/
 
-public class KeyVector 
+public class KeyVector extends FastVector
 {
-  /** Storage for Key objects. */
-  private FastVector vector; 
 
-  /**
-   *  Create a new vector of Key objects.
-   **/
-  public KeyVector () 
+  public KeyVector ()
   {
-    vector = new FastVector ();
+    super();  
   }
-
+  
   /**
    *  Create a new vector which contains only the given Key.
    **/
   public KeyVector (final Key new_key) 
   {
-    vector = new FastVector ();
+    super();
     add (new_key);
   }
 
-  /**
-   *  Performs the same function as Vector.addElement ()
-   **/
-  public void add (final Key node) 
-  {
-    vector.add (node);
-  }
-
-  /**
-   *  Performs the same function as Vector.elementAt ()
-   **/
-  public Key elementAt (final int index) 
-  {
-    return (Key) vector.elementAt (index);
-  }
-
-  /**
-   *  Performs the same function as Vector.setElementAt ()
-   **/
-  public void setElementAt (final Key key, final int index) 
-  {
-    vector.setElementAt (key, index);
-  }
-
-  /**
-   *  Performs the same function as Vector.size ()
-   **/
-  public int size () 
-  {
-    return vector.size ();
-  }
-
-  /**
-   *  Searches for the first occurence of the given argument, testing for
-   *  equality using the equals method.
-   *  @return the index of the first occurrence of the argument in this
-   *    vector; returns -1 if the object is not found.
-   **/
-  public int indexOf (final Key key) 
-  {
-    return vector.indexOf (key);
-  }
-
-  /**
-   *  Return true if this object contains the given Key, testing for
-   *  equality using the equals method.
-   **/
-  public boolean contains (final Key key) 
-  {
-    return vector.contains (key);
-  }
-
   /**
    *  Return a new copy of this object.
    **/
   public KeyVector copy () 
   {
-    final KeyVector new_key_vector = new KeyVector ();
-
-    new_key_vector.vector = (FastVector) vector.clone ();
+    final KeyVector new_key_vector = (KeyVector)clone();
 
     return new_key_vector;
   }
@@ -124,7 +65,7 @@ public class KeyVector
    * Sorts the elements of the vector using a simple O(n^2) selection
    * sort.
    */
-  public void sort () 
+  public void sort() 
   {
     int smallest;
 
@@ -134,14 +75,14 @@ public class KeyVector
       smallest = i;
       for(int j = i + 1 ; j < size () ; ++j) 
       {
-        if(elementAt(j).compareTo (elementAt(smallest)) < 0) 
+        if(((Key)get(j)).compareTo( (Key)get(smallest)) < 0) 
           smallest = j;
       }
       //exchange smallest and i
       if (smallest != i) 
       {
-        final Key tmp = elementAt (i);
-        setElementAt (elementAt(smallest), i);
+        final Key tmp = (Key)get(i);
+        setElementAt (get(smallest), i);
         setElementAt (tmp, smallest);
       }
     }
diff --git a/uk/ac/sanger/artemis/io/SimpleEntryInformation.java b/uk/ac/sanger/artemis/io/SimpleEntryInformation.java
index 21b6631c4179f9c355d7c8fabf635e8587aafd2d..749d397d72159a7700e27d166b75db58c795e62b 100644
--- a/uk/ac/sanger/artemis/io/SimpleEntryInformation.java
+++ b/uk/ac/sanger/artemis/io/SimpleEntryInformation.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/io/SimpleEntryInformation.java,v 1.2 2005-10-11 14:20:31 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/io/SimpleEntryInformation.java,v 1.3 2006-08-09 16:35:31 tjc Exp $
  */
 
 
@@ -35,7 +35,7 @@ import java.util.*;
  *  qualifier.
  *
  *  @author Kim Rutherford
- *  @version $Id: SimpleEntryInformation.java,v 1.2 2005-10-11 14:20:31 tjc Exp $
+ *  @version $Id: SimpleEntryInformation.java,v 1.3 2006-08-09 16:35:31 tjc Exp $
  **/
 
 public class SimpleEntryInformation
@@ -123,7 +123,7 @@ public class SimpleEntryInformation
 
     if (qualifier_valid_keys != null) {
       for (int i = 0 ; i < qualifier_valid_keys.size () ; ++i) {
-        final Key this_key = qualifier_valid_keys.elementAt (i);
+        final Key this_key = (Key)qualifier_valid_keys.get(i);
 
         if (valid_keys != null && valid_keys.contains (this_key)) {
           continue;
@@ -155,8 +155,8 @@ public class SimpleEntryInformation
 
       if (user_keys != null) {
         for (int i = 0 ; i < user_keys.size () ; ++i) {
-          if (!return_keys.contains (user_keys.elementAt (i))) {
-            return_keys.add (user_keys.elementAt (i));
+          if (!return_keys.contains ((Key)user_keys.get (i))) {
+            return_keys.add ((Key)user_keys.get (i));
           }
         }
       }
@@ -189,7 +189,7 @@ public class SimpleEntryInformation
     if (isValidKey (misc_feature_key)) {
       return misc_feature_key;
     } else {
-      return getValidKeys ().elementAt (0);
+      return (Key)getValidKeys ().get (0);
     }
   }
 
@@ -395,7 +395,7 @@ public class SimpleEntryInformation
       return getQualifierInfoHash ().copy ();
     }
   }
-
+    
   /**
    *  Fix this EntryInformation so that the given exception won't happen
    *  again.
diff --git a/uk/ac/sanger/artemis/util/DatabaseDocument.java b/uk/ac/sanger/artemis/util/DatabaseDocument.java
index 96836b2b6833f33e3522559135330f89d5144e6f..f0561788420528b17148d663e91873ece8694835 100644
--- a/uk/ac/sanger/artemis/util/DatabaseDocument.java
+++ b/uk/ac/sanger/artemis/util/DatabaseDocument.java
@@ -440,8 +440,9 @@ public class DatabaseDocument extends Document
                  id_store, dao, 
                  feat.getFeatureloc(), this_buff);
 
-      progress_listener.progressMade("Read from database: " + 
-                                     feat.getUniquename());
+      if( i%10 == 0 || i == feature_size-1)
+        progress_listener.progressMade("Read from database: " + 
+                                       feat.getUniquename());
     }
 
     return buffers;
diff --git a/uk/ac/sanger/artemis/util/FastVector.java b/uk/ac/sanger/artemis/util/FastVector.java
index 10cf39278bb9315ab5213d07e0ae091e8def1e56..b9d1712f01847e670521acf00c7d91ec0d72b441 100644
--- a/uk/ac/sanger/artemis/util/FastVector.java
+++ b/uk/ac/sanger/artemis/util/FastVector.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/util/FastVector.java,v 1.3 2004-12-21 09:55:33 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/util/FastVector.java,v 1.4 2006-08-09 16:35:31 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.util;
@@ -34,41 +34,23 @@ import java.util.Collections;
  *  contains().
  *
  *  @author Kim Rutherford <kmr@sanger.ac.uk>
- *  @version $Id: FastVector.java,v 1.3 2004-12-21 09:55:33 tjc Exp $
+ *  @version $Id: FastVector.java,v 1.4 2006-08-09 16:35:31 tjc Exp $
  *
  **/
 
-public class FastVector 
+public class FastVector extends ArrayList
 {
-  /** Storage for objects. */
-  private ArrayList vector = new ArrayList();
-
-  /**
-   *  Create a new vector of objects.
-   **/
-  public FastVector() 
-  {
-  }
-
   /**
    *  Performs the same function as Vector.addElement()
    */
-  public void add(Object object) 
+  public boolean add(Object object) 
   {
     if(object == null) 
       throw new Error("internal error - adding a null object");
     else if(contains(object))
       throw new Error("internal error - object added a second time");
 
-    vector.add(object);
-  }
-
-  /**
-   *  Performs the same function as Vector.elementAt()
-   */
-  public Object elementAt(int index) 
-  {
-    return (Object)vector.get(index);
+    return super.add(object);
   }
 
   /**
@@ -76,74 +58,9 @@ public class FastVector
    **/
   public Object lastElement() 
   {
-    return (Object)vector.get(vector.size() - 1);
-  }
-
-  /**
-   *  Performs the same function as Vector.removeElement()
-   **/
-  public boolean remove(Object object) 
-  {
-    if(contains(object)) 
-    {
-      vector.remove(object);
-      return true;
-    } 
-    else 
-      return false;
-  }
-
-  /**
-   *  Return true if this object contains the given Object.
-   **/
-  public boolean contains(Object object) 
-  {
-    return vector.contains(object);
+    return (Object)get(size() - 1);
   }
-
-  /**
-   *  Performs the same function as Vector.removeElement()
-   **/
-  public int indexOf(Object object) 
-  {
-    if(!contains(object)) 
-      return -1;
-    else 
-      return vector.indexOf(object);
-  }
-
-  /**
-   *  Performs the same function as Vector.size()
-   */
-  public int size()
-  {
-    return vector.size();
-  }
-
-  /**
-   *  Performs the same function as Vector.removeAllElement()
-   **/
-  public void removeAllElements()
-  {
-    vector.clear();
-  }
-
-  /**
-   *  Performs the same function as Vector.removeElementAt()
-   **/
-  public void removeElementAt(int index) 
-  {
-    final Object object = (Object)vector.remove(index);
-  }
-
-  /**
-   *  Performs the same function as Vector.insertElementAt()
-   **/
-  public final void insertElementAt(Object object, int index) 
-  {
-    vector.add(index, object);
-  }
-
+  
   /**
    *  Insert an Object after another.
    *  @param old_object The new_object will be inserted after this object
@@ -155,9 +72,9 @@ public class FastVector
     final int old_object_index = indexOf(old_object);
 
     if(old_object_index == -1) 
-      insertElementAt(new_object, 0);
+      add(0, new_object);
     else 
-      insertElementAt(new_object, old_object_index + 1);
+      add(old_object_index + 1, new_object);
   }
 
   /**
@@ -166,19 +83,8 @@ public class FastVector
    **/
   public void setElementAt(final Object object, final int index) 
   {
-    removeElementAt(index);
-    insertElementAt(object, index);
-  }
-
-  /**
-   *  Create a new FastVector with the same contents as this one.  Note that
-   *  this does only a shallow copy.
-   **/
-  public Object clone() 
-  {
-    final FastVector return_vector = new FastVector();
-    return_vector.vector = (ArrayList)vector.clone();
-    return return_vector;
+    remove(index);
+    add(index, object);
   }
 
   /**
@@ -188,7 +94,7 @@ public class FastVector
   public FastVector sort(final Comparator cmp) 
   {
     final FastVector return_vector = (FastVector)clone();
-    Collections.sort(return_vector.vector, cmp);
+    Collections.sort(return_vector, cmp);
     return return_vector;
   }