diff --git a/uk/ac/sanger/artemis/io/GFFDocumentEntry.java b/uk/ac/sanger/artemis/io/GFFDocumentEntry.java
index 7daeda295a4e8c73612303e455998db631d02aba..6ef468b6aef8b4ec89862b1b6e25921efe8cb5c2 100644
--- a/uk/ac/sanger/artemis/io/GFFDocumentEntry.java
+++ b/uk/ac/sanger/artemis/io/GFFDocumentEntry.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/GFFDocumentEntry.java,v 1.26 2006-07-04 11:05:49 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/io/GFFDocumentEntry.java,v 1.27 2006-07-04 15:59:38 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.io;
@@ -37,7 +37,7 @@ import java.sql.Timestamp;
  *  A DocumentEntry that can read an GFF entry from a Document.
  *
  *  @author Kim Rutherford
- *  @version $Id: GFFDocumentEntry.java,v 1.26 2006-07-04 11:05:49 tjc Exp $
+ *  @version $Id: GFFDocumentEntry.java,v 1.27 2006-07-04 15:59:38 tjc Exp $
  **/
 
 public class GFFDocumentEntry extends SimpleDocumentEntry
@@ -343,22 +343,35 @@ public class GFFDocumentEntry extends SimpleDocumentEntry
    **/
   public void combineChadoExons(ChadoCanonicalGene gene) 
   {
-    Hashtable exons = gene.getExons();
-    final Enumeration enum_exons = exons.keys();
+    Vector transcripts = (Vector)gene.getTranscripts();
+
     final RangeVector new_range_vector = new RangeVector();
     QualifierVector qualifier_vector = new QualifierVector();
     Hashtable id_range_store = new Hashtable();
     Timestamp lasttimemodified = null;
     
-    while(enum_exons.hasMoreElements())
+
+    for(int i=0; i<transcripts.size(); i++)
     {
-      String transcript_id = (String)enum_exons.nextElement();
-      Vector v_exons = (Vector)exons.get(transcript_id);
+      Feature transcript = (Feature)transcripts.get(i);
+      String transcript_id = null;
+      try
+      {
+        transcript_id = (String)(transcript.getQualifierByName("ID").getValues().get(0));
+      }
+      catch(InvalidRelationException e1)
+      {
+        e1.printStackTrace();
+      }
+      Vector v_exons = (Vector)gene.getExonsOfTranscript(transcript_id);
+      
+      if(v_exons == null)
+        continue;
       
-      for(int i=0; i<v_exons.size(); i++)
+      for(int j=0; j<v_exons.size(); j++)
       {
         final GFFStreamFeature this_feature =
-            (GFFStreamFeature)v_exons.get(i);
+            (GFFStreamFeature)v_exons.get(j);
       
         // use the most current lastmodified datestamp
         if(this_feature.getLastModified() != null &&