diff --git a/src/zmapWindow/zmapWindow.c b/src/zmapWindow/zmapWindow.c
index 2f11a583ad2aab69caf6bc941fbeca555c083a84..46dbe1f659e9dd95e28918ca04fe4357d30731a7 100755
--- a/src/zmapWindow/zmapWindow.c
+++ b/src/zmapWindow/zmapWindow.c
@@ -28,28 +28,18 @@
  *              
  * Exported functions: See ZMap/zmapWindow.h
  * HISTORY:
- * Last edited: Jun 30 15:47 2004 (edgrif)
+ * Last edited: Jul  2 14:42 2004 (rnc)
  * Created: Thu Jul 24 14:36:27 2003 (edgrif)
- * CVS info:   $Id: zmapWindow.c,v 1.13 2004-07-01 09:26:25 edgrif Exp $
+ * CVS info:   $Id: zmapWindow.c,v 1.14 2004-07-02 13:52:14 rnc Exp $
  *-------------------------------------------------------------------
  */
 
 #include <string.h>
 #include <glib.h>
-
-#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
-#include <../acedb/regular.h>
-#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
-
 #include <ZMap/zmapUtils.h>
-
-#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
-#include <ZMap/zmapcommon.h>
-#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
 #include <ZMap/zmapFeature.h>
-
 #include <zmapWindow_P.h>
-#include <zmapcontrol.c>
+#include <zmapDraw.h>
 
 
 static void dataEventCB(GtkWidget *widget, GdkEventClient *event, gpointer data) ;
@@ -189,11 +179,11 @@ static void dataEventCB(GtkWidget *widget, GdkEventClient *event, gpointer cb_da
       /* Can either get data from my dummied up GFF routine or if you set up an acedb server
        * you can get data from there.... just undef the one you want... */
 
-#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
+      //#ifdef ED_G_NEVER_INCLUDE_THIS_CODE
       feature_context = testGetGFF() ;			    /* Data read from a file... */
-#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
+      //#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */
 
-      feature_context = (ZMapFeatureContext)data ;	    /* Data from a server... */
+	//      feature_context = (ZMapFeatureContext)data ;	    /* Data from a server... */
 
 
       /* ****Remember that someone needs to free the data passed over....****  */
@@ -201,7 +191,7 @@ static void dataEventCB(GtkWidget *widget, GdkEventClient *event, gpointer cb_da
 
       /* <<<<<<<<<<<<<  ROB, this is where calls to your drawing code need to go  >>>>>>>>>>>> */
 
-
+      zmapWindowDrawFeatures(window, feature_context);
 
 
       g_free(window_data) ;				    /* Free the WindowData struct. */
@@ -299,13 +289,6 @@ void zMapWindowSetHandle(ZMapWindow window)
 
 
 
-void zMapWindowCreateRegion(ZMapWindow window)
-{
-  window->focuspane->zMapRegion = (ZMapRegion*)malloc(sizeof(ZMapRegion));
-  return;
-}
-
-
 GNode *zMapWindowGetPanesTree(ZMapWindow window)
 {
   return window->panesTree;
@@ -339,40 +322,6 @@ void zMapWindowSetFocuspane(ZMapWindow window, ZMapPane pane)
   return;
 }
 
-int zMapWindowGetHeight(ZMapWindow window)
-{
-  return window->focuspane->graphHeight;
-}
-
-int zMapWindowGetRegionLength(ZMapWindow window)
-{
-  return window->focuspane->zMapRegion->length;
-}
-
-Coord zMapWindowGetRegionArea(ZMapWindow window, int num)
-{
-  if (num == 1)
-    return window->focuspane->zMapRegion->area1;
-  else
-    return window->focuspane->zMapRegion->area2;
-}
-
-void zMapWindowSetRegionArea(ZMapWindow window, Coord area, int num)
-{
-  if (num == 1)
-    window->focuspane->zMapRegion->area1 = area;
-  else
-    window->focuspane->zMapRegion->area2 = area;
-
-return;
-}
-
-gboolean zMapWindowGetRegionReverse(ZMapWindow window)
-{
-  return window->focuspane->zMapRegion->rootIsReverse;
-}
-
-
 GtkWidget *zMapWindowGetHbox(ZMapWindow window)
 {
   return window->hbox;
@@ -452,15 +401,15 @@ void zMapWindowSetNavCanvas(ZMapWindow window, FooCanvas *navcanvas)
   return;
 }
 
-GtkWidget *zMapWindowGetZoomVbox(ZMapWindow window)
+GtkWidget *zMapWindowGetDisplayVbox(ZMapWindow window)
 {
-  return window->zoomvbox;
+  return window->displayvbox;
 }
 
 
-void zMapWindowSetZoomVbox(ZMapWindow window, GtkWidget *vbox)
+void zMapWindowSetDisplayVbox(ZMapWindow window, GtkWidget *vbox)
 {
-  window->zoomvbox = vbox;
+  window->displayvbox = vbox;
   return;
 }
 
@@ -486,6 +435,7 @@ Coord zMapWindowGetCoord(ZMapWindow window, char *field)
     return window->navEnd;
 }
 
+/***************** commenting out until I know what we really need 
 void zMapWindowSetCoord(ZMapWindow window, char *field, int size)
 {
   if (field == "s")
@@ -516,12 +466,7 @@ ScreenCoord zMapWindowGetScreenCoord(ZMapWindow window, Coord coord, int height)
   return height * (coord - window->navStart) / (window->navEnd - window->navStart);
 }
 
-
-int zMapWindowGetRegionSize (ZMapWindow window)
-{
-  return window->focuspane->zMapRegion->area2 - window->focuspane->zMapRegion->area1;
-}
-
+******************* end of commented out code */
 
 InvarCoord zMapWindowGetOrigin(ZMapWindow window)
 {
@@ -587,294 +532,4 @@ void zMapRegionFreeDNA(ZMapRegion *region)
 }
 
 
-// ZMapPane functions
-
-void zMapPaneNewBox2Col(ZMapPane pane, int elements)
-{
-  pane->box2col = g_array_sized_new(FALSE, TRUE, sizeof(ZMapColumn), elements);
-
-  return ;
-}
-
-
-
-GArray *zMapPaneSetBox2Col(ZMapPane pane, ZMapColumn *col, int index)
-{
-  return g_array_insert_val(pane->box2col, index, col);
-}
-
-ZMapColumn *zMapPaneGetBox2Col(ZMapPane pane, int index)
-{
-  return &g_array_index(pane->box2col, ZMapColumn, index);
-}
-
-
-void zMapPaneFreeBox2Col(ZMapPane pane)
-{
-  if (pane->box2col)
-    g_array_free(pane->box2col, TRUE);
-  return;
-}
-
-
-void zMapPaneNewBox2Seg(ZMapPane pane, int elements)
-{
-  pane->box2seg = g_array_sized_new(FALSE, TRUE, sizeof(ZMapFeatureStruct), elements);
-
-  return ;
-}
-
-GArray *zMapPaneSetBox2Seg(ZMapPane pane, ZMapColumn *seg, int index)
-{
-  return g_array_insert_val(pane->box2seg, index, seg);
-}
-
-ZMapFeature zMapPaneGetBox2Seg(ZMapPane pane, int index)
-{
-  return &g_array_index(pane->box2seg, ZMapFeatureStruct, index);
-}
-
-void zMapPaneFreeBox2Seg(ZMapPane pane)
-{
-  if (pane->box2seg)
-    g_array_free(pane->box2seg, TRUE);
-  return;
-}
-
-
-ZMapRegion *zMapPaneGetZMapRegion(ZMapPane pane)
-{
-  return pane->zMapRegion;
-}
-
-
-FooCanvasItem *zMapPaneGetGroup(ZMapPane pane)
-{
-  return pane->group;
-}
-
-
-ZMapWindow zMapPaneGetZMapWindow(ZMapPane pane)
-{
-  return pane->window;
-}
-
-FooCanvas *zMapPaneGetCanvas(ZMapPane pane)
-{
-  return pane->canvas;
-}
-
-GPtrArray *zMapPaneGetCols(ZMapPane pane)
-{
-  return &pane->cols;
-}
-
-
-int          zMapPaneGetDNAwidth       (ZMapPane pane)
-{
-  return pane->DNAwidth;
-}
-
-
-void zMapPaneSetDNAwidth       (ZMapPane pane, int width)
-{
-  pane->DNAwidth = 100;
-  return;
-}
-
-void zMapPaneSetStepInc        (ZMapPane pane, int incr)
-{
-  pane->step_increment = incr;
-  return;
-}
-
-
-int zMapPaneGetHeight(ZMapPane pane)
-{
-  return pane->graphHeight;
-}
-
-InvarCoord zMapPaneGetCentre(ZMapPane pane)
-{
-  return pane->centre;
-}
-
-
-float zMapPaneGetBPL (ZMapPane pane)
-{
-  return pane->basesPerLine;
-}
-
-
-/* addPane is called each time we add a new pane. Creates a new frame, scrolled
- * window and canvas.  First time through it sticks them in the window->zoomvbox, 
- * thereafter it packs them into the lower part of the focus pane.
- *
- * Splitting goes like this: we make a (h or v) pane, add a new frame to the child1 
- * position of that, then reparent the scrolled window containing the canvas into 
- * the new frame. That's the shrinkPane() function. 
- * Then in addPane we add a new frame in the child2 position, and into that we
- * load a new scrolled window and canvas. 
-*/
-void addPane(ZMapWindow window, char orientation)
-{
-  ZMapPane pane = (ZMapPane)malloc(sizeof(ZMapPaneStruct));
-  GtkAdjustment *adj; 
-  GtkWidget *w;
-  GNode *node = NULL;
-
-  /* set up ZMapPane for this window */
-  pane->window = window;
-  pane->DNAwidth = 100;
-  pane->step_increment = 10;
-
-  /* create the bare graph & convert to a widget */
-  /*    pane->graph = graphNakedCreate(TEXT_FIT, "", 20, 100, TRUE);
-	pane->graphWidget = gexGraph2Widget(pane->graph);*/
-  
-  //  pane->cols = arrayHandleCreate(50, ZMapColumn, zMapWindowGetHandle(window));
-  //  pane->cols = arrayCreate(50, ZMapColumn);
-  pane->box2col = g_array_sized_new(FALSE, TRUE, sizeof(ZMapColumn), 50);
-  //  pane->box2col        = NULL;
-  //  pane->box2seg        = NULL;
-  //  pane->drawHandle     = NULL;
-  pane->frame          = gtk_frame_new(NULL);
-  pane->scrolledWindow = gtk_scrolled_window_new (NULL, NULL);
-
-  /* The idea of the GNode tree is that panes split horizontally, ie
-   * one above the other, end up as siblings in the tree, while panes
-   * split vertically (side by side) are parents/children.  In theory
-   * this enables us to get the sizing right. In practice it's not
-   * perfect yet.*/
-  if (zMapWindowGetFirstTime(window)) 
-    { 
-      pane->zoomFactor   = 1;
-      g_node_append_data(zMapWindowGetPanesTree(window), pane);
-    }
-  else
-    {
-      pane->zoomFactor   = zMapWindowGetFocuspane(window)->zoomFactor;
-      node = g_node_find (zMapWindowGetPanesTree(window),
-			  G_IN_ORDER,
-			  G_TRAVERSE_ALL,
-			  zMapWindowGetFocuspane(window));
-      if (orientation == 'h')
-	  g_node_append_data(node->parent, pane);
-      else
-	  g_node_append_data(node, pane);
-    }
-
-  /* draw the canvas */
-  gdk_rgb_init();
-  w = foo_canvas_new();
-
-  pane->canvas = FOO_CANVAS(w);
-  foo_canvas_set_scroll_region(pane->canvas, 0.0, 0.0, 1000, 1000);
-  pane->background = foo_canvas_item_new(foo_canvas_root(pane->canvas),
-	 		foo_canvas_rect_get_type(),
-			"x1",(double)0,
-			"y1",(double)0,
-			"x2",(double)1000,
-			"y2",(double)1000,
-		 	"fill_color", "white",
-			"outline_color", "dark gray",
-			NULL);
-  
-  /* when the user clicks a button in the view, call recordFocus() */
-  g_signal_connect (GTK_OBJECT (pane->canvas), "button_press_event",
-		    GTK_SIGNAL_FUNC (recordFocus), pane);
-
-  pane->group = foo_canvas_item_new(foo_canvas_root(pane->canvas),
-                        foo_canvas_group_get_type(),
-                        "x", (double)100,
-                        "y", (double)100 ,
-                        NULL);
-
-  /* add the canvas to the scrolled window */
-  gtk_container_add(GTK_CONTAINER(pane->scrolledWindow),w);
-
-  /* you have to set the step_increment manually or the scrollbar arrows don't work.*/
-  /* Using a member of ZMapPane means I can adjust it if necessary when we zoom. */
-  GTK_LAYOUT (w)->vadjustment->step_increment = pane->step_increment;
-  GTK_LAYOUT (w)->hadjustment->step_increment = pane->step_increment;
-
-  /* add the scrolled window to the frame */
-  gtk_container_add(GTK_CONTAINER(pane->frame),pane->scrolledWindow);
-
-  /* First time through, we add the frame to the main vbox. 
-   * Subsequently it goes in the lower half of the current pane. */
-  if (zMapWindowGetFirstTime(window))
-    gtk_box_pack_start(GTK_BOX(zMapWindowGetZoomVbox(window)), pane->frame, TRUE, TRUE, 0);
-  else
-    gtk_paned_pack2(GTK_PANED(zMapWindowGetFocuspane(window)->pane), pane->frame, TRUE, TRUE);
-
-
-  /* always show scrollbars, however big the display */
-  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pane->scrolledWindow),
-       GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
-
-  adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(pane->scrolledWindow)); 
-
-  //  g_signal_connect(GTK_OBJECT(adj), "value_changed", GTK_SIGNAL_FUNC(navUpdate), (gpointer)(pane));
-  //  g_signal_connect(GTK_OBJECT(adj), "changed", GTK_SIGNAL_FUNC(navChange), (gpointer)(pane)); 
-
-  /* focus on the new pane */
-  recordFocus(NULL, NULL, pane);
-  gtk_widget_grab_focus(pane->frame);
-
-  /* if we do this first time, a little blank box appears before the main display */
-  if (!zMapWindowGetFirstTime(window)) 
-    gtk_widget_show_all (zMapWindowGetFrame(window));
-
-  zMapWindowSetFirstTime(window, FALSE);
-
-  zmMainScale(pane->canvas, 30, 0, 1000);
-  return;
-}
-
-
-void drawNavigatorWind(ZMapPane pane)
-{
-  ZMapWindow window = pane->window;
-  int height;
-  Coord startWind, endWind;
-  ScreenCoord startWindf, endWindf, lenWindf;
-  ScreenCoord startScreenf, endScreenf;
-  ScreenCoord pos;
-  GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(pane->scrolledWindow));
-
-
-  //  graphFitBounds(NULL, &height);
-  
-  startWind =  zmCoordFromScreen(pane, 0);
-  endWind   =  zmCoordFromScreen(pane, pane->graphHeight);
-  
-  startWindf = zMapWindowGetScreenCoord(window, startWind, height);
-  endWindf   = zMapWindowGetScreenCoord(window, endWind, height);
-  lenWindf   = endWindf - startWindf;
-  
-  startScreenf = startWindf + lenWindf * (adj->value - adj->lower)/(adj->upper - adj->lower) ;
-  endScreenf   = startWindf + lenWindf * (adj->page_size + adj->value - adj->lower)/(adj->upper - adj->lower) ;
-  
-  //  graphColor(BLACK);
-  
-  if (pane == window->focuspane)
-    pos = zMapWindowGetScaleOffset(window);
-  else
-    pos = zMapWindowGetScaleOffset(window);
-
-  /* for now we'll not actually draw anything */
-  //  pane->dragBox = graphBoxStart();
-  //  graphLine(pos, startWindf, pos, endWindf);
-  //  pane->scrollBox = graphBoxStart();
-  //  graphColor(GREEN);
-  //  graphFillRectangle(pos - 0.3, startScreenf, pos + 0.5, endScreenf);
-  //  graphBoxEnd();
-  //  graphBoxSetPick(pane->scrollBox, FALSE);
-  //  graphBoxEnd();
-  //  graphBoxDraw(pane->dragBox, -1, LIGHTGRAY);
-
-  return;
-}
-
 /****************** end of file ************************************/