diff --git a/src/zmapServer/das/dasServer.c b/src/zmapServer/das/dasServer.c
index 581ebdf2ffbcc9d58729c977fb298f35558fa8e7..d955035f2254bca83f0d1789717a3aa4670f9068 100755
--- a/src/zmapServer/das/dasServer.c
+++ b/src/zmapServer/das/dasServer.c
@@ -26,9 +26,9 @@
  *              
  * Exported functions: See ZMap/zmapServerPrototype.h
  * HISTORY:
- * Last edited: Dec  4 09:50 2008 (edgrif)
+ * Last edited: Feb  3 16:16 2009 (rds)
  * Created: Wed Aug  6 15:46:38 2003 (edgrif)
- * CVS info:   $Id: dasServer.c,v 1.34 2008-12-05 09:11:06 edgrif Exp $
+ * CVS info:   $Id: dasServer.c,v 1.35 2009-02-04 09:17:33 rds Exp $
  *-------------------------------------------------------------------
  */
 
@@ -1530,8 +1530,8 @@ static void fixFeatureCache(gpointer key, gpointer data, gpointer user_data)
   /* add feature to the correct set! Not just this block! To do this: */
   /* find the feature_set.  If it doesn't exist create it.  
    * I haven't got time to work out why */
-  style_id  = zMapStyleGetUniqueID(feature->style) ;
-  type_name = (char *)g_quark_to_string(zMapStyleGetID(feature->style));
+  style_id  = feature->style_id;
+  type_name = g_quark_to_string(feature->style_id);
 
   if((feature_set = g_hash_table_lookup(block->feature_sets, GINT_TO_POINTER(style_id))) == NULL)
     {
diff --git a/src/zmapWindow/zmapWindow.c b/src/zmapWindow/zmapWindow.c
index 553bf8dec373e4473d3f8afed628f001aca46c9d..deddcbd9803c39001a916233642d08ff1c0a9898 100755
--- a/src/zmapWindow/zmapWindow.c
+++ b/src/zmapWindow/zmapWindow.c
@@ -26,9 +26,9 @@
  *              
  * Exported functions: See ZMap/zmapWindow.h
  * HISTORY:
- * Last edited: Feb  3 15:13 2009 (edgrif)
+ * Last edited: Feb  4 09:15 2009 (rds)
  * Created: Thu Jul 24 14:36:27 2003 (edgrif)
- * CVS info:   $Id: zmapWindow.c,v 1.262 2009-02-03 15:54:03 edgrif Exp $
+ * CVS info:   $Id: zmapWindow.c,v 1.263 2009-02-04 09:15:55 rds Exp $
  *-------------------------------------------------------------------
  */
 
@@ -542,7 +542,7 @@ static ZMapFeatureContextExecuteStatus undisplayFeaturesCB(GQuark key,
     case ZMAPFEATURE_STRUCT_FEATURE:
       feature = (ZMapFeature)feature_any;
       /* which column drawn in depends on style. */
-      column_strand = zmapWindowFeatureStrand(feature);
+      column_strand = zmapWindowFeatureStrand(window, feature);
 
       if((feature_item = zmapWindowFToIFindFeatureItem(window->context_to_item,
                                                        column_strand,
@@ -1318,9 +1318,8 @@ void zMapWindowUpdateInfoPanel(ZMapWindow     window,
 
   if((set = (ZMapFeatureSet)zMapFeatureGetParentGroup((ZMapFeatureAny)feature, ZMAPFEATURE_STRUCT_FEATURESET)))
     select.feature_desc.feature_set = (char *)g_quark_to_string(set->original_id) ;
-
-  select.feature_desc.feature_style
-    = zMapStyleGetName(zMapFeatureGetStyle((ZMapFeatureAny)feature)) ;
+#warning FIX ME
+  select.feature_desc.feature_style = "";//zMapStyleGetName(zMapFeatureGetStyle((ZMapFeatureAny)feature)) ;
 
   if (highlight_item)
     select.highlight_item = highlight_item ;
diff --git a/src/zmapWindow/zmapWindowColBump.c b/src/zmapWindow/zmapWindowColBump.c
index 0973849349d129ec97dc629f3bce5679e3f8cdbe..d160b9319c66676318859da608c2619a58b5f59a 100755
--- a/src/zmapWindow/zmapWindowColBump.c
+++ b/src/zmapWindow/zmapWindowColBump.c
@@ -27,9 +27,9 @@
  *
  * Exported functions: See zmapWindow_P.h
  * HISTORY:
- * Last edited: Feb  3 15:50 2009 (edgrif)
+ * Last edited: Feb  3 16:00 2009 (rds)
  * Created: Tue Sep  4 10:52:09 2007 (edgrif)
- * CVS info:   $Id: zmapWindowColBump.c,v 1.27 2009-02-03 15:54:34 edgrif Exp $
+ * CVS info:   $Id: zmapWindowColBump.c,v 1.28 2009-02-04 09:16:03 rds Exp $
  *-------------------------------------------------------------------
  */
 
@@ -3389,7 +3389,7 @@ static GList *removeNonColinear(GList *first_list_item, ZMapGListDirection direc
 	      curr_feature = tmp ;
 	    }
 
-	  colinearity = featureHomolIsColinear(bump_data->window, prev_feature, curr_feature) ;
+	  colinearity = featureHomolIsColinear(bump_data->window, bump_data->bumped_style, prev_feature, curr_feature) ;
 	  if (colinearity == COLINEAR_INVALID || colinearity == COLINEAR_NOT)
 	    still_colinear = FALSE ;
 
diff --git a/src/zmapWindow/zmapWindowMenus.c b/src/zmapWindow/zmapWindowMenus.c
index a2062de65526ec0e23bae057119975a727cfef3a..49ab237fe0f93cddd66955daf7b1f1931cd1d9ab 100755
--- a/src/zmapWindow/zmapWindowMenus.c
+++ b/src/zmapWindow/zmapWindowMenus.c
@@ -27,9 +27,9 @@
  * Exported functions: ZMap/zmapWindows.h
  *              
  * HISTORY:
- * Last edited: Jan 29 09:31 2009 (rds)
+ * Last edited: Feb  3 16:06 2009 (rds)
  * Created: Thu Mar 10 07:56:27 2005 (edgrif)
- * CVS info:   $Id: zmapWindowMenus.c,v 1.52 2009-01-29 10:09:49 rds Exp $
+ * CVS info:   $Id: zmapWindowMenus.c,v 1.53 2009-02-04 09:16:11 rds Exp $
  *-------------------------------------------------------------------
  */
 
@@ -960,7 +960,7 @@ static void developerMenuCB(int menu_item_id, gpointer callback_data)
 	  {
 	    ZMapFeature feature = (ZMapFeature)feature_any ;
 
-	    zmapWindowShowStyle(feature->style) ;
+	    //zmapWindowShowStyle(feature->style) ;
 	  }
 
 	break ;
@@ -1157,7 +1157,7 @@ static void dumpFeatures(ZMapWindow window, ZMapSpan region_span, ZMapFeatureAny
 
   if (!(filepath = zmapGUIFileChooser(window->toplevel, "Feature Dump filename ?", NULL, "gff"))
       || !(file = g_io_channel_new_file(filepath, "w", &error))
-      || !zMapGFFDumpRegion((ZMapFeatureAny)feature_block, region_span, file, &error))
+      || !zMapGFFDumpRegion((ZMapFeatureAny)feature_block, window->read_only_styles, region_span, file, &error))
     {
       /* N.B. if there is no filepath it means user cancelled so take no action...,
        * otherwise we output the error message. */
@@ -1197,7 +1197,7 @@ static void dumpContext(ZMapWindow window)
 
   if (!(filepath = zmapGUIFileChooser(window->toplevel, "Context Dump filename ?", NULL, "zmap"))
       || !(file = g_io_channel_new_file(filepath, "w", &error))
-      || !zMapFeatureContextDump(window->feature_context, file, &error))
+      || !zMapFeatureContextDump(window->feature_context, window->read_only_styles, file, &error))
     {
       /* N.B. if there is no filepath it means user cancelled so take no action...,
        * otherwise we output the error message. */
diff --git a/src/zmapWindow/zmapWindowSearch.c b/src/zmapWindow/zmapWindowSearch.c
index 3dab61715819bc0a770cd0728a24741163d79e13..d23a80db859f1755fc1a8b76cad4118b37ce8aa6 100755
--- a/src/zmapWindow/zmapWindowSearch.c
+++ b/src/zmapWindow/zmapWindowSearch.c
@@ -28,9 +28,9 @@
  *              
  * Exported functions: See zmapWindow_P.h
  * HISTORY:
- * Last edited: Jan 13 14:03 2009 (edgrif)
+ * Last edited: Feb  3 16:17 2009 (rds)
  * Created: Fri Aug 12 16:53:21 2005 (edgrif)
- * CVS info:   $Id: zmapWindowSearch.c,v 1.35 2009-01-13 15:02:02 edgrif Exp $
+ * CVS info:   $Id: zmapWindowSearch.c,v 1.36 2009-02-04 09:17:38 rds Exp $
  *-------------------------------------------------------------------
  */
 
@@ -1178,7 +1178,7 @@ gboolean searchPredCB(FooCanvasItem *canvas_item, gpointer user_data)
 
 	if (search_pred->style)
 	  {
-	    if (feature->style == search_pred->style)
+	    if (feature->style_id == zMapStyleGetID(search_pred->style))
 	      result = TRUE ;
 	    else
 	      result = FALSE ;
diff --git a/src/zmapWindow/zmapWindowStats.c b/src/zmapWindow/zmapWindowStats.c
index 28af676229058fb66310b57f0bd493ef2df183f8..ae9676ba9a23074bb6e3fcb8b0c6557f512a8338 100755
--- a/src/zmapWindow/zmapWindowStats.c
+++ b/src/zmapWindow/zmapWindowStats.c
@@ -29,9 +29,9 @@
  *
  * Exported functions: See zmapWindow_P.h
  * HISTORY:
- * Last edited: Feb  3 13:46 2009 (edgrif)
+ * Last edited: Feb  3 16:19 2009 (rds)
  * Created: Tue Nov  7 10:10:25 2006 (edgrif)
- * CVS info:   $Id: zmapWindowStats.c,v 1.10 2009-02-03 13:46:41 edgrif Exp $
+ * CVS info:   $Id: zmapWindowStats.c,v 1.11 2009-02-04 09:17:47 rds Exp $
  *-------------------------------------------------------------------
  */
 
@@ -142,7 +142,7 @@ ZMapWindowStatsAny zmapWindowStatsAddChild(ZMapWindowStats stats, ZMapFeatureAny
 
 	  stats_any = g_slice_alloc0(num_bytes) ;
 	  stats_any->feature_type = feature->type ;
-	  stats_any->style = feature->style ;
+	  stats_any->style_id = feature->style_id ;
 
 	  stats->child_sets = g_list_append(stats->child_sets, stats_any) ;
 	}
@@ -290,7 +290,7 @@ static gint feature2StyleCompare(gconstpointer a, gconstpointer b)
   ZMapWindowStatsAny stats = (ZMapWindowStatsAny)a ;
   ZMapFeature feature = (ZMapFeature)b ;
 
-  if (zMapStyleGetUniqueID(stats->style) == zMapStyleGetUniqueID(feature->style))
+  if (stats->style_id == feature->style_id)
     result = 0 ;
 
   return result ;
diff --git a/src/zmapWindow/zmapWindow_P.h b/src/zmapWindow/zmapWindow_P.h
index f2274e4841cb4ffc633bf0f223112982ad9d4652..65c3b3a9f1ed9b11dfe779b0607806445ff0f69f 100755
--- a/src/zmapWindow/zmapWindow_P.h
+++ b/src/zmapWindow/zmapWindow_P.h
@@ -25,9 +25,9 @@
  * Description: Defines internal interfaces/data structures of zMapWindow.
  *              
  * HISTORY:
- * Last edited: Feb  3 14:32 2009 (rds)
+ * Last edited: Feb  3 16:18 2009 (rds)
  * Created: Fri Aug  1 16:45:58 2003 (edgrif)
- * CVS info:   $Id: zmapWindow_P.h,v 1.229 2009-02-03 14:57:33 rds Exp $
+ * CVS info:   $Id: zmapWindow_P.h,v 1.230 2009-02-04 09:18:05 rds Exp $
  *-------------------------------------------------------------------
  */
 #ifndef ZMAP_WINDOW_P_H
@@ -72,7 +72,7 @@ typedef struct
 {
   ZMapStyleMode feature_type ;
 
-  ZMapFeatureTypeStyle style ;
+  GQuark style_id ;
   int num_children ;
   int num_items ;