diff --git a/src/include/ZMap/zmapGFF.h b/src/include/ZMap/zmapGFF.h
index bf324c34ceb36b246bacf7af0ed5e235fb807dbb..64ea489f8aba6f5450199341e82c0b58cf28a510 100755
--- a/src/include/ZMap/zmapGFF.h
+++ b/src/include/ZMap/zmapGFF.h
@@ -28,9 +28,9 @@
  *              of ZMapFeatureStruct's, one for each GFF source.
  *              
  * HISTORY:
- * Last edited: Nov  4 09:49 2008 (rds)
+ * Last edited: Feb  3 13:36 2009 (edgrif)
  * Created: Sat May 29 13:18:32 2004 (edgrif)
- * CVS info:   $Id: zmapGFF.h,v 1.14 2008-11-05 12:12:44 rds Exp $
+ * CVS info:   $Id: zmapGFF.h,v 1.15 2009-02-03 13:48:12 edgrif Exp $
  *-------------------------------------------------------------------
  */
 #ifndef ZMAP_GFF_H
@@ -88,6 +88,8 @@ gboolean zMapGFFTerminated(ZMapGFFParser parser) ;
 void zMapGFFSetFreeOnDestroy(ZMapGFFParser parser, gboolean free_on_destroy) ;
 void zMapGFFDestroyParser(ZMapGFFParser parser) ;
 
-gboolean zMapGFFDump(ZMapFeatureAny dump_set, GIOChannel *file, GError **error_out);
+gboolean zMapGFFDump(ZMapFeatureAny dump_set, GData *styles, GIOChannel *file, GError **error_out);
+gboolean zMapGFFDumpRegion(ZMapFeatureAny dump_set, GData *styles,
+			   ZMapSpan region_span, GIOChannel *file, GError **error_out) ;
 
 #endif /* ZMAP_GFF_H */
diff --git a/src/zmapGFF/zmapGFF2Dumper.c b/src/zmapGFF/zmapGFF2Dumper.c
index eb74163131d016c5d10a28684a9b07d70a502e06..5d8463799b68995db36f888f3a9f861bdb28be59 100755
--- a/src/zmapGFF/zmapGFF2Dumper.c
+++ b/src/zmapGFF/zmapGFF2Dumper.c
@@ -26,15 +26,15 @@
  *
  * Exported functions: See ZMap/zmapGFF.h
  * HISTORY:
- * Last edited: Nov 24 15:17 2008 (rds)
+ * Last edited: Feb  3 13:39 2009 (edgrif)
  * Created: Mon Nov 14 13:21:14 2005 (edgrif)
- * CVS info:   $Id: zmapGFF2Dumper.c,v 1.14 2008-11-24 15:41:07 rds Exp $
+ * CVS info:   $Id: zmapGFF2Dumper.c,v 1.15 2009-02-03 13:47:53 edgrif Exp $
  *-------------------------------------------------------------------
  */
 
 #include <ZMap/zmapUtils.h>
 #include <ZMap/zmapFeature.h>
-
+#include <ZMap/zmapGFF.h>
 
 #define GFF_SEPARATOR  "\t"
 #define GFF_SEQ        "%s"
@@ -85,6 +85,8 @@ typedef struct
 /* Fields are: <sequence> <source> <feature> <start> <end> <score> <strand> <frame> <attributes> */
 typedef struct _GFFDumpDataStruct
 {
+  GData *styles ;
+
   const char *gff_sequence;	/* The sequence name. e.g. 16.12345-23456 */
   char *gff_source;		/* The source e.g. augustus, TrEMBL, trf, polya_site */
   char *gff_feature;		/* The feature type e.g. Sequence, intron, exon, CDS, coding_exon, misc_feature */
@@ -100,16 +102,18 @@ typedef struct _GFFDumpDataStruct
 }GFFDumpDataStruct;
 
 /* Functions to dump the header section of gff files */
-static gboolean dump_full_header(ZMapFeatureAny feature_any, GIOChannel *file, GError **error_out, const char **sequence_in_out);
+static gboolean dump_full_header(ZMapFeatureAny feature_any, GIOChannel *file, GError **error_out,
+				 const char **sequence_in_out) ;
 static ZMapFeatureContextExecuteStatus get_type_seq_header_cb(GQuark   key, 
 							      gpointer data, 
 							      gpointer user_data,
-							      char   **err_out);
+							      char   **err_out) ;
 
 /* Functions to dump the body of the data */
 
 /* ZMapFeatureDumpFeatureFunc to dump gff. writes lines into gstring buffer... */
-static gboolean dump_gff_cb(ZMapFeatureAny feature_any, 
+static gboolean dump_gff_cb(ZMapFeatureAny feature_any,
+			    GData         *styles,
 			    GString       *gff_string,
 			    GError       **error,
 			    gpointer       user_data);
@@ -207,16 +211,17 @@ static DumpGFFAttrFunc text_funcs_G[] = {
  * sequences.
  * 
  *  */
-gboolean zMapGFFDump(ZMapFeatureAny dump_set, GIOChannel *file, GError **error_out)
+gboolean zMapGFFDump(ZMapFeatureAny dump_set, GData *styles, GIOChannel *file, GError **error_out)
 {
   gboolean result = TRUE;
 
-  result = zMapGFFDumpRegion(dump_set, NULL, file, error_out);
+  result = zMapGFFDumpRegion(dump_set, styles, NULL, file, error_out);
 
   return result;
 }
 
-gboolean zMapGFFDumpRegion(ZMapFeatureAny dump_set, ZMapSpan region_span, GIOChannel *file, GError **error_out)
+gboolean zMapGFFDumpRegion(ZMapFeatureAny dump_set, GData *styles,
+			   ZMapSpan region_span, GIOChannel *file, GError **error_out)
 {
   const char *sequence = NULL;
   gboolean result = TRUE ;
@@ -238,16 +243,17 @@ gboolean zMapGFFDumpRegion(ZMapFeatureAny dump_set, ZMapSpan region_span, GIOCha
       gff_data.transcript = transcript_funcs_G;
       gff_data.homol      = homol_funcs_G;
       gff_data.text       = text_funcs_G;
+      gff_data.styles     = styles ;
 
       /* This might get overwritten later, but as DumpToFile uses
        * Subset, there's a chance it wouldn't get set at all */
       gff_data.gff_sequence = sequence;	
       if(region_span)
-	result = zMapFeatureContextRangeDumpToFile((ZMapFeatureAny)dump_set, region_span, 
+	result = zMapFeatureContextRangeDumpToFile((ZMapFeatureAny)dump_set, styles, region_span, 
 						   dump_gff_cb, &gff_data, file, error_out) ;
       else
-	result = zMapFeatureContextDumpToFile((ZMapFeatureAny)dump_set, dump_gff_cb, 
-					    &gff_data, file, error_out) ;
+	result = zMapFeatureContextDumpToFile((ZMapFeatureAny)dump_set, styles, dump_gff_cb, 
+					      &gff_data, file, error_out) ;
     }
 
   return result ;  
@@ -256,7 +262,7 @@ gboolean zMapGFFDumpRegion(ZMapFeatureAny dump_set, ZMapSpan region_span, GIOCha
 /*!
  * \brief Dump a list of ZMapFeatureAny. sequence can be NULL
  */
-gboolean zMapGFFDumpList(GList *dump_list, char *sequence, GIOChannel *file, GError **error_out)
+gboolean zMapGFFDumpList(GList *dump_list, GData *styles, char *sequence, GIOChannel *file, GError **error_out)
 {
   const char *int_sequence = NULL;
   gboolean result = FALSE ;
@@ -284,14 +290,14 @@ gboolean zMapGFFDumpList(GList *dump_list, char *sequence, GIOChannel *file, GEr
        * Subset, there's a chance it wouldn't get set at all */
       gff_data.gff_sequence = int_sequence;	
 
-      result = zMapFeatureListDumpToFile(dump_list, dump_gff_cb, &gff_data, 
+      result = zMapFeatureListDumpToFile(dump_list, styles, dump_gff_cb, &gff_data, 
 					 file, error_out) ;
     }
 
   return result ;
 }
 
-gboolean zMapGFFDumpForeachList(ZMapFeatureAny first_feature, GIOChannel *file, GError **error_out,
+gboolean zMapGFFDumpForeachList(ZMapFeatureAny first_feature, GData *styles, GIOChannel *file, GError **error_out,
 				char *sequence, GFunc *list_func_out, gpointer *list_data_out)
 {
   const char *int_sequence = NULL;
@@ -321,7 +327,7 @@ gboolean zMapGFFDumpForeachList(ZMapFeatureAny first_feature, GIOChannel *file,
        * Subset, there's a chance it wouldn't get set at all */
       gff_data->gff_sequence = int_sequence;	
 
-      result = zMapFeatureListForeachDumperCreate(dump_gff_cb,   gff_data, g_free,
+      result = zMapFeatureListForeachDumperCreate(dump_gff_cb, styles, gff_data, g_free,
 						  file,          error_out, 
 						  list_func_out, list_data_out) ;
     }
@@ -446,6 +452,7 @@ static ZMapFeatureContextExecuteStatus get_type_seq_header_cb(GQuark   key,
 }
 
 static gboolean dump_gff_cb(ZMapFeatureAny feature_any, 
+			    GData         *styles,
 			    GString       *gff_string,
 			    GError       **error,
 			    gpointer       user_data)
@@ -469,13 +476,15 @@ static gboolean dump_gff_cb(ZMapFeatureAny feature_any,
     case ZMAPFEATURE_STRUCT_FEATURE:
       {
 	ZMapFeature feature = (ZMapFeature)feature_any;
+	ZMapFeatureTypeStyle style ;
 
-	/* Fields are: <seqname> <source> <feature> <start> <end> <score> <strand> <frame> */
+	style = zMapFindStyle(gff_data->styles, feature->style_id) ;
 
-	/* Output a record for the whole feature. */
-	if(!(gff_data->gff_source  = zMapStyleGetGFFSource(feature->style)))
-	  gff_data->gff_source = zMapStyleGetName(feature->style);
-	if(!(gff_data->gff_feature = zMapStyleGetGFFFeature(feature->style)))
+	/* Output a record for the whole feature, fields are:
+	 *      <seqname> <source> <feature> <start> <end> <score> <strand> <frame> */
+	if(!(gff_data->gff_source  = zMapStyleGetGFFSource(style)))
+	  gff_data->gff_source = zMapStyleGetName(style);
+	if(!(gff_data->gff_feature = zMapStyleGetGFFFeature(style)))
 	  gff_data->gff_feature = (char *)g_quark_to_string(feature->ontology);
 	
 	/* Obligatory fields. */