diff --git a/src/include/ZMap/zmapServerProtocol.h b/src/include/ZMap/zmapServerProtocol.h
index f1c8eac1984802cdb45d3cd1dfd368715b699117..2d6694126dda5c8e736cc49f9e4225bc0ee0d170 100755
--- a/src/include/ZMap/zmapServerProtocol.h
+++ b/src/include/ZMap/zmapServerProtocol.h
@@ -27,9 +27,9 @@
  *              structs that give all the information/fields for the request/reply.
  *              
  * HISTORY:
- * Last edited: Jun 12 10:09 2009 (edgrif)
+ * Last edited: Aug 13 09:43 2009 (edgrif)
  * Created: Wed Feb  2 11:47:16 2005 (edgrif)
- * CVS info:   $Id: zmapServerProtocol.h,v 1.24 2009-06-12 13:59:18 edgrif Exp $
+ * CVS info:   $Id: zmapServerProtocol.h,v 1.25 2009-08-14 09:51:10 edgrif Exp $
  *-------------------------------------------------------------------
  */
 #ifndef ZMAP_PROTOCOL_H
@@ -141,6 +141,9 @@ typedef struct
   GHashTable *featureset_2_stylelist_out ;		    /* Mapping of each feature_set to all
 							       the styles it requires. */
 
+  GHashTable *source_2_featureset_out ;			    /* Mapping of a features source to the
+							       feature_set it will be placed in. */
+
 } ZMapServerReqFeatureSetsStruct, *ZMapServerReqFeatureSets ;
 
 
diff --git a/src/zmapServer/acedb/acedbServer.c b/src/zmapServer/acedb/acedbServer.c
index 24745e8ba3106ddf6fa12b59876ad01c16f2f154..0af278cf1af519ad6a61138cc0b8657bc1b2f229 100755
--- a/src/zmapServer/acedb/acedbServer.c
+++ b/src/zmapServer/acedb/acedbServer.c
@@ -27,9 +27,9 @@
  *              
  * Exported functions: See zmapServer.h
  * HISTORY:
- * Last edited: Jul 29 13:26 2009 (edgrif)
+ * Last edited: Aug 13 14:47 2009 (edgrif)
  * Created: Wed Aug  6 15:46:38 2003 (edgrif)
- * CVS info:   $Id: acedbServer.c,v 1.140 2009-07-29 12:27:38 edgrif Exp $
+ * CVS info:   $Id: acedbServer.c,v 1.141 2009-08-14 09:51:10 edgrif Exp $
  *-------------------------------------------------------------------
  */
 
@@ -158,7 +158,8 @@ static ZMapServerResponseType getInfo(void *server, ZMapServerInfo info) ;
 static ZMapServerResponseType getFeatureSetNames(void *server,
 						 GList **feature_sets_out,
 						 GList **required_styles,
-						 GHashTable **featureset_2_stylelist_inout) ;
+						 GHashTable **featureset_2_stylelist_inout,
+						 GHashTable **source_2_featureset_out) ;
 static ZMapServerResponseType getStyles(void *server, GData **styles_out) ;
 static ZMapServerResponseType haveModes(void *server, gboolean *have_mode) ;
 static ZMapServerResponseType getSequences(void *server_in, GList *sequences_inout) ;
@@ -325,7 +326,10 @@ static gboolean createConnection(void **server_out,
   if (server->has_new_tags)
     {
       server->method_2_data = g_hash_table_new_full(NULL, NULL, NULL, freeDataCB) ;
+
+#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
       server->method_2_feature_set = g_hash_table_new_full(NULL, NULL, NULL, freeSetCB) ;
+#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
     }
 
   *server_out = (void *)server ;
@@ -405,7 +409,8 @@ static ZMapServerResponseType getInfo(void *server_in, ZMapServerInfo info)
 static ZMapServerResponseType getFeatureSetNames(void *server_in,
 						 GList **feature_sets_inout,
 						 GList **required_styles_out,
-						 GHashTable **featureset_2_stylelist_inout)
+						 GHashTable **featureset_2_stylelist_inout,
+						 GHashTable **source_2_featureset_out)
 {
   ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ;
   AcedbServer server = (AcedbServer)server_in ;
@@ -428,7 +433,11 @@ static ZMapServerResponseType getFeatureSetNames(void *server_in,
       g_hash_table_destroy(server->method_2_data) ;
       server->method_2_data = g_hash_table_new_full(NULL, NULL, NULL, freeDataCB) ;
 
+
+#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
       g_hash_table_destroy(server->method_2_feature_set) ;
+#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
+
       server->method_2_feature_set = g_hash_table_new_full(NULL, NULL, NULL, freeSetCB) ;
     }
 
@@ -523,6 +532,8 @@ static ZMapServerResponseType getFeatureSetNames(void *server_in,
 	  *required_styles_out = required_styles ;
 
 	  *featureset_2_stylelist_inout = featureset_2_stylelist ;
+
+	  *source_2_featureset_out = server->method_2_feature_set ;
 	}
     }
   else if (result != ZMAP_SERVERRESPONSE_REQFAIL)
@@ -834,13 +845,13 @@ static ZMapServerResponseType findColStyleTags(AcedbServer server,
 
 
 
-#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
+
 	  printf("\n=======================\n") ;
 	  zMap_g_list_quark_print(feature_set_methods, "Column feature_sets", FALSE) ;
 	  printf("\n=======================\n") ;
 	  zMap_g_list_quark_print(feature_methods, "Child methods", FALSE) ;
 	  printf("\n=======================\n") ;
-#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
+
 
 
 
@@ -947,12 +958,11 @@ static ZMapServerResponseType findColStyleTags(AcedbServer server,
 
 
 
-#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
 	  zMap_g_list_quark_print(required_styles, "feature_sets", FALSE) ;
 	  printf("\n=======================\n") ;
 	  zMap_g_hashlist_print(featureset_2_stylelist) ;
 	  printf("\n=======================\n") ;
-#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
+
 
 
 	  num_curr = g_list_length(get_sets.feature_methods) ;
diff --git a/src/zmapServer/das/dasServer.c b/src/zmapServer/das/dasServer.c
index 9f79c6c1b9e8eaac7c23c31d550cf05dda7e57e7..e226702b85db3a257cda45cc98ca8b553905f5c4 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: Jun 12 14:55 2009 (edgrif)
+ * Last edited: Aug 13 09:55 2009 (edgrif)
  * Created: Wed Aug  6 15:46:38 2003 (edgrif)
- * CVS info:   $Id: dasServer.c,v 1.38 2009-06-12 13:57:07 edgrif Exp $
+ * CVS info:   $Id: dasServer.c,v 1.39 2009-08-14 09:51:10 edgrif Exp $
  *-------------------------------------------------------------------
  */
 
@@ -94,7 +94,8 @@ static ZMapServerResponseType getSequences(void *server_in, GList *sequences_ino
 static ZMapServerResponseType getFeatureSets(void *server,
 					     GList **feature_sets_out,
 					     GList **required_styles,
-					     GHashTable **featureset_2_stylelist_inout) ;
+					     GHashTable **featureset_2_stylelist_inout,
+					     GHashTable **source_2_featureset_out) ;
 static ZMapServerResponseType setContext(void *server, ZMapFeatureContext feature_context);
 static ZMapServerResponseType getFeatures(void *server_in, GData *styles, ZMapFeatureContext feature_context) ;
 static ZMapServerResponseType getContextSequence(void *server_in, GData *styles, ZMapFeatureContext feature_context) ;
@@ -368,7 +369,10 @@ static ZMapServerResponseType openConnection(void *server_in)
 static ZMapServerResponseType getInfo(void *server_in, ZMapServerInfo info)
 {
   ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ;
+#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
   DasServer server = (DasServer)server_in ;
+#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
+
 
   /* Needs implementing............ */
 
@@ -451,7 +455,8 @@ static ZMapServerResponseType getSequences(void *server_in, GList *sequences_ino
 static ZMapServerResponseType getFeatureSets(void *server,
 					     GList **feature_sets_out,
 					     GList **required_styles,
-					     GHashTable **featureset_2_stylelist_inout)
+					     GHashTable **featureset_2_stylelist_inout,
+					     GHashTable **source_2_featureset_out)
 {
   ZMapServerResponseType result = ZMAP_SERVERRESPONSE_OK;
 
diff --git a/src/zmapServer/file/fileServer.c b/src/zmapServer/file/fileServer.c
index 048e43736c170a865ff11505d611e38ec6ebffbf..784e91d1b28a44ea423e3a8483aea5db5d841294 100755
--- a/src/zmapServer/file/fileServer.c
+++ b/src/zmapServer/file/fileServer.c
@@ -30,9 +30,9 @@
  *              
  * Exported functions: See ZMap/zmapServerPrototype.h
  * HISTORY:
- * Last edited: Jul  2 21:56 2009 (rds)
+ * Last edited: Aug 13 09:55 2009 (edgrif)
  * Created: Fri Sep 10 18:29:18 2004 (edgrif)
- * CVS info:   $Id: fileServer.c,v 1.39 2009-07-02 22:21:32 rds Exp $
+ * CVS info:   $Id: fileServer.c,v 1.40 2009-08-14 09:51:10 edgrif Exp $
  *-------------------------------------------------------------------
  */
 
@@ -72,7 +72,8 @@ static ZMapServerResponseType getInfo(void *server, ZMapServerInfo info) ;
 static ZMapServerResponseType getFeatureSetNames(void *server,
 						 GList **feature_sets_out,
 						 GList **required_styles,
-						 GHashTable **featureset_2_stylelist_inout) ;
+						 GHashTable **featureset_2_stylelist_inout,
+						 GHashTable **source_2_featureset_out) ;
 static ZMapServerResponseType getStyles(void *server, GData **styles_out) ;
 static ZMapServerResponseType haveModes(void *server, gboolean *have_mode) ;
 static ZMapServerResponseType getSequences(void *server_in, GList *sequences_inout) ;
@@ -240,7 +241,8 @@ static ZMapServerResponseType getInfo(void *server_in, ZMapServerInfo info)
 static ZMapServerResponseType getFeatureSetNames(void *server_in,
 						 GList **feature_sets_inout,
 						 GList **required_styles_out,
-						 GHashTable **featureset_2_stylelist_inout)
+						 GHashTable **featureset_2_stylelist_inout,
+						 GHashTable **source_2_featureset_out)
 {
   ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ;
   FileServer server = (FileServer)server_in ;
diff --git a/src/zmapServer/zmapServer.c b/src/zmapServer/zmapServer.c
index 201b77e8f9543f3a2bbd21a3a37f1e45e575830b..b4d740f783165960ed0e322c5a83760b821787b9 100755
--- a/src/zmapServer/zmapServer.c
+++ b/src/zmapServer/zmapServer.c
@@ -26,9 +26,9 @@
  * Description: 
  * Exported functions: See ZMap/zmapServer.h
  * HISTORY:
- * Last edited: Jun 12 10:49 2009 (edgrif)
+ * Last edited: Aug 13 09:33 2009 (edgrif)
  * Created: Wed Aug  6 15:46:38 2003 (edgrif)
- * CVS info:   $Id: zmapServer.c,v 1.37 2009-06-12 14:00:50 edgrif Exp $
+ * CVS info:   $Id: zmapServer.c,v 1.38 2009-08-14 09:51:10 edgrif Exp $
  *-------------------------------------------------------------------
  */
 
@@ -179,7 +179,8 @@ ZMapServerResponseType zMapServerOpenConnection(ZMapServer server)
 ZMapServerResponseType zMapServerFeatureSetNames(ZMapServer server,
 						 GList **feature_sets_inout,
 						 GList **required_styles_out,
-						 GHashTable **featureset_2_stylelist_out)
+						 GHashTable **featureset_2_stylelist_out,
+						 GHashTable **source_2_featureset_out)
 {
   ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ;
 
@@ -189,7 +190,8 @@ ZMapServerResponseType zMapServerFeatureSetNames(ZMapServer server,
     = (server->funcs->feature_set_names)(server->server_conn,
 					 feature_sets_inout,
 					 required_styles_out,
-					 featureset_2_stylelist_out) ;
+					 featureset_2_stylelist_out,
+					 source_2_featureset_out) ;
 
   if (result != ZMAP_SERVERRESPONSE_OK)
     server->last_error_msg = ZMAPSERVER_MAKEMESSAGE(server->url->protocol, 
diff --git a/src/zmapServer/zmapServer.h b/src/zmapServer/zmapServer.h
index e86ba7025909e180badbba0b2d46341a169e03b2..6d6b3f31d0d8f4c01833092a968d79dee61951a6 100755
--- a/src/zmapServer/zmapServer.h
+++ b/src/zmapServer/zmapServer.h
@@ -26,9 +26,9 @@
  *              details from caller.
  *
  * HISTORY:
- * Last edited: Jun 12 10:54 2009 (edgrif)
+ * Last edited: Aug 13 09:31 2009 (edgrif)
  * Created: Wed Aug  6 15:48:47 2003 (edgrif)
- * CVS info:   $Id: zmapServer.h,v 1.13 2009-06-12 14:00:50 edgrif Exp $
+ * CVS info:   $Id: zmapServer.h,v 1.14 2009-08-14 09:51:10 edgrif Exp $
  *-------------------------------------------------------------------
  */
 #ifndef ZMAP_SERVER_H
@@ -64,7 +64,8 @@ ZMapServerResponseType zMapServerGetServerInfo(ZMapServer server, ZMapServerInfo
 ZMapServerResponseType zMapServerFeatureSetNames(ZMapServer server,
 						 GList **feature_sets_inout,
 						 GList **required_styles,
-						 GHashTable **featureset_2_stylelist_out) ;
+						 GHashTable **featureset_2_stylelist_out,
+						 GHashTable **source_2_featureset_out) ;
 ZMapServerResponseType zMapServerGetStyles(ZMapServer server, GData **types_out) ;
 ZMapServerResponseType zMapServerStylesHaveMode(ZMapServer server, gboolean *have_mode) ;
 ZMapServerResponseType zMapServerGetSequence(ZMapServer server, GList *sequences_inout) ;
diff --git a/src/zmapServer/zmapServerProtocolHandler.c b/src/zmapServer/zmapServerProtocolHandler.c
index daf9e0dde328b21e80a535da9bd51444168ca1e1..f58653e51b3dda54937434c920f72147c51a9d5a 100755
--- a/src/zmapServer/zmapServerProtocolHandler.c
+++ b/src/zmapServer/zmapServerProtocolHandler.c
@@ -25,9 +25,9 @@
  * Description: 
  * Exported functions: See ZMap/zmapServerProtocol.h
  * HISTORY:
- * Last edited: Jun 12 15:48 2009 (rds)
+ * Last edited: Aug 13 09:43 2009 (edgrif)
  * Created: Thu Jan 27 13:17:43 2005 (edgrif)
- * CVS info:   $Id: zmapServerProtocolHandler.c,v 1.44 2009-06-12 14:50:15 rds Exp $
+ * CVS info:   $Id: zmapServerProtocolHandler.c,v 1.45 2009-08-14 09:51:10 edgrif Exp $
  *-------------------------------------------------------------------
  */
 
@@ -396,7 +396,8 @@ ZMapThreadReturnCode zMapServerRequestHandler(void **slave_data,
 	request->response = zMapServerFeatureSetNames(server,
 						      &(feature_sets->feature_sets_inout),
 						      &(feature_sets->required_styles_out),
-						      &(feature_sets->featureset_2_stylelist_out)) ;
+						      &(feature_sets->featureset_2_stylelist_out),
+						      &(feature_sets->source_2_featureset_out)) ;
 
 
 	if (request->response != ZMAP_SERVERRESPONSE_OK && request->response != ZMAP_SERVERRESPONSE_UNSUPPORTED)
diff --git a/src/zmapServer/zmapServerPrototype.h b/src/zmapServer/zmapServerPrototype.h
index 5c97889657c1b3a6509f843a11a0c7296048025a..27a9d5f53078ce3f09ca1ca4d1365cd02ed543b5 100755
--- a/src/zmapServer/zmapServerPrototype.h
+++ b/src/zmapServer/zmapServerPrototype.h
@@ -28,9 +28,9 @@
  *              include this header, its not really for general consumption.
  *              
  * HISTORY:
- * Last edited: Jun 12 15:00 2009 (edgrif)
+ * Last edited: Aug 13 09:32 2009 (edgrif)
  * Created: Wed Aug  6 15:48:47 2003 (edgrif)
- * CVS info:   $Id: zmapServerPrototype.h,v 1.26 2009-06-12 14:00:50 edgrif Exp $
+ * CVS info:   $Id: zmapServerPrototype.h,v 1.27 2009-08-14 09:51:10 edgrif Exp $
  *-------------------------------------------------------------------
  */
 #ifndef ZMAP_SERVER_PROTOTYPEP_H
@@ -68,7 +68,8 @@ typedef ZMapServerResponseType (*ZMapServerGetServerInfo)(void *server_in, ZMapS
 typedef ZMapServerResponseType (*ZMapServerGetFeatureSets)(void *server_in,
 							   GList **feature_sets_inout,
 							   GList **required_styles_out,
-							   GHashTable **featureset_2_stylelist_out) ;
+							   GHashTable **featureset_2_stylelist_out,
+							   GHashTable **source_2_featureset_out) ;
 
 typedef ZMapServerResponseType (*ZMapServerGetStyles)(void *server_in,
 						      GData **styles_out) ;