diff --git a/uk/ac/sanger/artemis/components/ActMain.java b/uk/ac/sanger/artemis/components/ActMain.java
index 24cc2a37a382d726dccb75919f1f9fd1735e73e3..711a2068920ba82a177b67d6f76f0f8ac8721fed 100644
--- a/uk/ac/sanger/artemis/components/ActMain.java
+++ b/uk/ac/sanger/artemis/components/ActMain.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/components/ActMain.java,v 1.10 2006-10-18 14:25:23 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/ActMain.java,v 1.11 2006-10-23 13:34:12 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.components;
@@ -31,7 +31,7 @@ import uk.ac.sanger.artemis.*;
 import uk.ac.sanger.artemis.sequence.Bases;
 import uk.ac.sanger.artemis.sequence.NoSequenceException;
 import uk.ac.sanger.artemis.components.database.DatabaseEntrySource;
-import uk.ac.sanger.artemis.components.database.DatabaseJFrame;
+import uk.ac.sanger.artemis.components.database.DatabaseJPanel;
 import uk.ac.sanger.artemis.components.database.DatabaseTreeNode;
 
 import uk.ac.sanger.artemis.util.*;
@@ -41,14 +41,13 @@ import uk.ac.sanger.artemis.io.SimpleEntryInformation;
 
 import java.awt.event.*;
 import java.io.IOException;
-import java.io.File;
 import javax.swing.JFrame;
 
 /**
  *  The main window for the Artemis Comparison Tool.
  *
  *  @author Kim Rutherford <kmr@sanger.ac.uk>
- *  @version $Id: ActMain.java,v 1.10 2006-10-18 14:25:23 tjc Exp $
+ *  @version $Id: ActMain.java,v 1.11 2006-10-23 13:34:12 tjc Exp $
  **/
 
 public class ActMain extends Splash 
@@ -96,9 +95,13 @@ public class ActMain extends Splash
         new ComparatorDialog(ActMain.this).setVisible(true);
       }
     }; 
-    makeMenuItem(file_menu, "Open SSH File Manager ...", menu_listener_ssh);
+    
+    if(System.getProperty("chado") != null)
+      makeMenuItem(file_menu, "Open Database and SSH File Manager ...", menu_listener_ssh);
+    else 
+      makeMenuItem(file_menu, "Open SSH File Manager ...", menu_listener_ssh);
 
-    final boolean sanger_options =
+/*    final boolean sanger_options =
       Options.getOptions().getPropertyTruthValue("sanger_options");
 
     if(sanger_options)
@@ -114,7 +117,7 @@ public class ActMain extends Splash
       makeMenuItem(file_menu, "Database Entry ...", menu_listener);
       if(System.getProperty("chado") != null)
         launchDatabaseJFrame(false);
-    }
+    }*/
     
     makeMenuItem(file_menu, "Quit", quit_listener);
   }
@@ -340,9 +343,16 @@ public class ActMain extends Splash
         DatabaseEntrySource entry_source = new DatabaseEntrySource();
         if(!entry_source.setLocation(prompt_user))
           return null;
-
-        final DatabaseJFrame frame = new DatabaseJFrame(entry_source,
+        
+        JFrame frame = new JFrame("Organism List");
+        final DatabaseJPanel pane = new DatabaseJPanel(entry_source,
                                                ActMain.this);
+        frame.getContentPane().add(pane);
+        frame.pack();
+        Utilities.rightJustifyFrame(frame);
+        frame.setVisible(true);
+        frame.setJMenuBar(pane.makeMenuBar(entry_source, ActMain.this));
+        
         frame.setVisible(true);
         getStatusLabel().setText("");
         return null;
diff --git a/uk/ac/sanger/artemis/components/ArtemisMain.java b/uk/ac/sanger/artemis/components/ArtemisMain.java
index de4d9054851efaa66c3fe8bc5924f445bc6a549a..edbb2e7020d492d007f59df69f8e151e1005ba27 100644
--- a/uk/ac/sanger/artemis/components/ArtemisMain.java
+++ b/uk/ac/sanger/artemis/components/ArtemisMain.java
@@ -20,13 +20,13 @@
  * 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/components/ArtemisMain.java,v 1.21 2006-10-18 14:25:23 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/ArtemisMain.java,v 1.22 2006-10-23 13:34:12 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.components;
 
 import uk.ac.sanger.artemis.components.database.DatabaseEntrySource;
-import uk.ac.sanger.artemis.components.database.DatabaseJFrame;
+import uk.ac.sanger.artemis.components.database.DatabaseJPanel;
 import uk.ac.sanger.artemis.components.filetree.FileManager;
 import uk.ac.sanger.artemis.components.filetree.LocalAndRemoteFileManager;
 import uk.ac.sanger.artemis.*;
@@ -45,12 +45,13 @@ import java.awt.event.*;
 import java.awt.Toolkit;
 import java.io.*;
 import java.awt.datatransfer.*;
+import javax.swing.JFrame;
 
 /**
  *  The main window for the Artemis sequence editor.
  *
  *  @author Kim Rutherford <kmr@sanger.ac.uk>
- *  @version $Id: ArtemisMain.java,v 1.21 2006-10-18 14:25:23 tjc Exp $
+ *  @version $Id: ArtemisMain.java,v 1.22 2006-10-23 13:34:12 tjc Exp $
  **/
 
 public class ArtemisMain extends Splash 
@@ -62,6 +63,9 @@ public class ArtemisMain extends Splash
   private EntryEditVector entry_edit_objects = new EntryEditVector();
 
   protected static FileManager filemanager = null;
+  
+  private LocalAndRemoteFileManager fm;
+  
   /**
    *  The constructor creates all the components for the main Artemis 
    *  window and sets up all the menu callbacks.
@@ -82,10 +86,8 @@ public class ArtemisMain extends Splash
     };
     makeMenuItem(file_menu, "Open File Manager ...", menu_listener);
 
-
     ActionListener menu_listener_ssh = new ActionListener()
     {
-      private LocalAndRemoteFileManager fm;
       public void actionPerformed(ActionEvent event)
       {
         if(fm == null)
@@ -94,7 +96,11 @@ public class ArtemisMain extends Splash
           fm.setVisible(true);
       }
     };
-    makeMenuItem(file_menu, "Open SSH File Manager ...", menu_listener_ssh);
+    
+    if(System.getProperty("chado") != null)
+      makeMenuItem(file_menu, "Open Database and SSH File Manager ...", menu_listener_ssh);
+    else 
+      makeMenuItem(file_menu, "Open SSH File Manager ...", menu_listener_ssh);
 
 
     final EntrySourceVector entry_sources = getEntrySources(this);
@@ -134,12 +140,12 @@ public class ArtemisMain extends Splash
     final boolean sanger_options =
       Options.getOptions().getPropertyTruthValue("sanger_options");
 
-    if(sanger_options)
+/*    if(sanger_options)
     {
       makeMenuItem(file_menu, "Database Entry ...", menu_listener);
       if(System.getProperty("chado") != null)
-        launchDatabaseJFrame(false);
-    }
+          fm = new LocalAndRemoteFileManager(ArtemisMain.this);
+    }*/
 
     menu_listener = new ActionListener() 
     {
@@ -259,9 +265,14 @@ public class ArtemisMain extends Splash
         if(!entry_source.setLocation(prompt_user))
           return null;
 
-        final DatabaseJFrame frame = new DatabaseJFrame(entry_source,
+        JFrame frame = new JFrame("Organism List");
+        final DatabaseJPanel pane = new DatabaseJPanel(entry_source,
                                                ArtemisMain.this);
+        frame.getContentPane().add(pane);
+        frame.pack();
+        Utilities.rightJustifyFrame(frame);
         frame.setVisible(true);
+        frame.setJMenuBar(pane.makeMenuBar(entry_source, ArtemisMain.this));
         getStatusLabel().setText("");
         return null;
       }
diff --git a/uk/ac/sanger/artemis/components/database/DatabaseJFrame.java b/uk/ac/sanger/artemis/components/database/DatabaseJPanel.java
similarity index 81%
rename from uk/ac/sanger/artemis/components/database/DatabaseJFrame.java
rename to uk/ac/sanger/artemis/components/database/DatabaseJPanel.java
index 52b50161cbb2d9644cb55f11bbb1c7b0224f5e01..b21599debb8eda334dc0b0d647350b7fa8f1c4de 100644
--- a/uk/ac/sanger/artemis/components/database/DatabaseJFrame.java
+++ b/uk/ac/sanger/artemis/components/database/DatabaseJPanel.java
@@ -1,4 +1,4 @@
-/* DatabaseJFrame.java
+/* DatabaseJPanel.java
  *
  * created: June 2005
  *
@@ -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/components/database/DatabaseJFrame.java,v 1.1 2006-10-18 14:25:23 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/database/DatabaseJPanel.java,v 1.1 2006-10-23 13:34:12 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.components.database;
@@ -29,12 +29,12 @@ import uk.ac.sanger.artemis.components.*;
 
 import uk.ac.sanger.artemis.Entry;
 import uk.ac.sanger.artemis.sequence.*;
+import uk.ac.sanger.artemis.util.InputStreamProgressEvent;
 import uk.ac.sanger.artemis.util.InputStreamProgressListener;
 import uk.ac.sanger.artemis.util.OutOfRangeException;
 import uk.ac.sanger.artemis.util.DatabaseDocument;
 import uk.ac.sanger.artemis.io.DatabaseDocumentEntry;
 
-import javax.swing.JFrame;
 import javax.swing.JTree;
 import javax.swing.JScrollPane;
 import javax.swing.JSeparator;
@@ -60,16 +60,17 @@ import java.awt.Cursor;
 import java.awt.FontMetrics;
 import java.io.*;
 
-public class DatabaseJFrame extends JFrame
+public class DatabaseJPanel extends JPanel
 {
   private JLabel status_line = new JLabel("");
   private boolean splitGFFEntry = false;
-
-  public DatabaseJFrame(final DatabaseEntrySource entry_source,
-      final Splash splash_main)
+  private JTree tree;
+  
+  public DatabaseJPanel(final DatabaseEntrySource entry_source,
+                        final Splash splash_main)
   {
-    super("Organism List");
-    final JTree tree = entry_source.getDatabaseTree();
+    setLayout(new BorderLayout());
+    tree = entry_source.getDatabaseTree();
 
     // Listen for when the selection changes.
     MouseListener mouseListener = new MouseAdapter()
@@ -89,10 +90,7 @@ public class DatabaseJFrame extends JFrame
                                         screen.height * 6 / 10);
     scroll.setPreferredSize(dim_frame);
 
-    setJMenuBar(makeMenuBar(entry_source, tree, splash_main));
-
-    JPanel pane = (JPanel)getContentPane();
-    pane.add(scroll, BorderLayout.CENTER);
+    add(scroll, BorderLayout.CENTER);
 
     final FontMetrics fm = this.getFontMetrics(status_line.getFont());
 
@@ -105,16 +103,20 @@ public class DatabaseJFrame extends JFrame
     Border compound = BorderFactory.createCompoundBorder(raisedbevel,
                                                          loweredbevel);
     status_line.setBorder(compound);
-    pane.add(status_line, BorderLayout.SOUTH);
-
-    pack();
-    Utilities.rightJustifyFrame(this);
+    add(status_line, BorderLayout.SOUTH);
+    
+    JLabel title_line = new JLabel("Database List");
+    title_line.setMinimumSize(new Dimension(100, font_height));
+    title_line.setPreferredSize(new Dimension(100, font_height));
+    title_line.setBorder(compound);
+    add(title_line, BorderLayout.NORTH);
   }
 
   /**
-   * 
    * Show the selected sequence in the tree
-   * 
+   * @param entry_source
+   * @param tree
+   * @param splash_main
    */
   private void showSelected(final DatabaseEntrySource entry_source,
       final JTree tree, final Splash splash_main)
@@ -141,9 +143,13 @@ public class DatabaseJFrame extends JFrame
   }
 
   /**
-   * 
    * Retrieve a database entry.
-   * 
+   * @param id
+   * @param entry_source
+   * @param tree
+   * @param splash_main
+   * @param node_name
+   * @param schema
    */
   private void getEntryEditFromDatabase(final String id,
       final DatabaseEntrySource entry_source, final JTree tree,
@@ -161,13 +167,10 @@ public class DatabaseJFrame extends JFrame
         tree.setCursor(cbusy);
         try
         {
-          final InputStreamProgressListener progress_listener = 
-                           splash_main.getInputStreamProgressListener();
-
           entry_source.setSplitGFF(splitGFFEntry);
 
           final Entry entry = entry_source.getEntry(id, schema,
-                                                    progress_listener);
+              stream_progress_listener);
 
 
           DatabaseDocumentEntry db_entry =
@@ -228,8 +231,14 @@ public class DatabaseJFrame extends JFrame
 
   }
 
-  private JMenuBar makeMenuBar(final DatabaseEntrySource entry_source,
-                               final JTree tree, final Splash splash_main)
+  /**
+   * Create a menu bar 
+   * @param entry_source
+   * @param splash_main
+   * @return
+   */
+  public JMenuBar makeMenuBar(final DatabaseEntrySource entry_source,
+                              final Splash splash_main)
   {
     JMenuBar mBar = new JMenuBar();
     JMenu fileMenu = new JMenu("File");
@@ -275,4 +284,26 @@ public class DatabaseJFrame extends JFrame
 
     return mBar;
   }
+  
+  /**
+   *  An InputStreamProgressListener used to update the error label with the
+   *  current number of chars read.
+   **/
+  private final InputStreamProgressListener stream_progress_listener =
+    new InputStreamProgressListener() 
+  {
+    public void progressMade(final InputStreamProgressEvent event) 
+    {
+      final int char_count = event.getCharCount();
+      if(char_count == -1) 
+        status_line.setText("");
+      else 
+        status_line.setText("chars read so far: " + char_count);
+    }
+
+    public void progressMade(String progress)
+    {
+      status_line.setText(progress);
+    }
+  };
 }
diff --git a/uk/ac/sanger/artemis/components/filetree/LocalAndRemoteFileManager.java b/uk/ac/sanger/artemis/components/filetree/LocalAndRemoteFileManager.java
index 88309a378847b81099e740a652a059e8a93eb10e..731b8e41a35cfae1e7482d9768c59d0239e12260 100644
--- a/uk/ac/sanger/artemis/components/filetree/LocalAndRemoteFileManager.java
+++ b/uk/ac/sanger/artemis/components/filetree/LocalAndRemoteFileManager.java
@@ -21,6 +21,8 @@
 
 package uk.ac.sanger.artemis.components.filetree;
 
+import uk.ac.sanger.artemis.components.database.DatabaseEntrySource;
+import uk.ac.sanger.artemis.components.database.DatabaseJPanel;
 import uk.ac.sanger.artemis.j2ssh.SshLogin;
 import uk.ac.sanger.artemis.j2ssh.SshFileManager;
 import uk.ac.sanger.artemis.util.StringVector;
@@ -28,6 +30,7 @@ import uk.ac.sanger.artemis.Options;
 
 import javax.swing.table.TableColumn;
 import javax.swing.*;
+
 import java.io.File;
 import java.io.FileFilter;
 import java.awt.event.*;
@@ -59,7 +62,7 @@ public class LocalAndRemoteFileManager extends JFrame
   */
   public LocalAndRemoteFileManager(JFrame frame, FileFilter filter)
   {
-    super("File Manager");
+    super();
 
     final JPanel localPanel = new JPanel(new BorderLayout());
     
@@ -78,7 +81,7 @@ public class LocalAndRemoteFileManager extends JFrame
     //
     final Dimension screen    = Toolkit.getDefaultToolkit().getScreenSize();
     final Dimension panelSize = new Dimension((int)(screen.getWidth()/3),
-                                          (int)(screen.getHeight()/3));
+                                          (int)(screen.getHeight()/4));
     String remote_name = "";
     final JLabel remote_status_line = getStatusLabel("");
 
@@ -109,9 +112,11 @@ public class LocalAndRemoteFileManager extends JFrame
       });
 
       bdown.add(connect);
-      int ypos = panelSize.height-connect.getPreferredSize().height;
+      /*int ypos = panelSize.height-connect.getPreferredSize().height;
       if(ypos>0)
-        bdown.add(Box.createVerticalStrut(ypos/2));
+        bdown.add(Box.createVerticalStrut(ypos/2));*/
+      bdown.add(Box.createVerticalGlue());
+      
       remotePanel.add(bdown, BorderLayout.SOUTH);
       remotePanel.setPreferredSize(panelSize);
     }
@@ -127,13 +132,41 @@ public class LocalAndRemoteFileManager extends JFrame
 
     treePane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
                                  localPanel,remotePanel);
-
+    treePane.setOneTouchExpandable(true);
+    
     JPanel pane = (JPanel)getContentPane();
     pane.setLayout(new BorderLayout());
-    pane.add(treePane, BorderLayout.CENTER);
-
-    treePane.setDividerLocation((int)(screen.getHeight()/3));
-    setJMenuBar(makeMenuBar(pane,ftree,sshtree,localPanel,remotePanel,treePane,panelSize));
+    
+    if(System.getProperty("chado") != null)
+    { 
+      setTitle("Database and File Manager");
+      DatabaseEntrySource entry_source = new DatabaseEntrySource();
+      if(!entry_source.setLocation(true))
+        return;
+    
+      JLabel label = new JLabel(" Database Loading...");
+      JScrollPane dbScroll = new JScrollPane(label);
+      
+      DbConnectionThread dbthread =
+        new DbConnectionThread(dbScroll, panelSize, entry_source);
+      dbthread.start();
+      dbScroll.setPreferredSize(panelSize);
+      
+      JSplitPane mainSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
+                                            dbScroll, treePane);
+      treePane.setDividerLocation((int)(screen.getHeight()/4));
+      mainSplit.setOneTouchExpandable(true);
+      mainSplit.setDividerLocation((int)(screen.getHeight()/4));
+      pane.add(mainSplit, BorderLayout.CENTER);
+    }
+    else
+    {
+      setTitle("File Manager");
+      pane.add(treePane, BorderLayout.CENTER);
+      treePane.setDividerLocation((int)(screen.getHeight()/4));
+    }
+    setJMenuBar(makeMenuBar(pane,ftree,sshtree,localPanel,
+                            remotePanel,treePane,panelSize));
     localPanel.add(getFileFileterComboBox(ftree), BorderLayout.SOUTH);
 
     localTree.setPreferredSize(panelSize);
@@ -534,61 +567,33 @@ public class LocalAndRemoteFileManager extends JFrame
     
     return path;
   }
-
-  class UpButton extends JButton
+  
+  
+  public class DbConnectionThread extends Thread
   {
-    public void paintComponent(Graphics g)
+    private JScrollPane dbScroll;
+    private Dimension panelSize;
+    private DatabaseEntrySource entry_source;
+    
+    public DbConnectionThread(final JScrollPane dbScroll,
+                              final Dimension panelSize,
+                              final DatabaseEntrySource entry_source)
     {
-      super.paintComponent(g);
-      Graphics2D g2 = (Graphics2D)g; 
-
-      g2.setColor(new Color(0,128,0));
-      float loc1[][] = { {11,18}, {7,18}, {7,14},
-                         {3,14},  {11,4} };
-                
-      g2.fill(makeShape(loc1));
-      g2.setColor(Color.green);
-
-      float loc2[][] = { {11,18}, {15,18}, {15,14},
-                         {19,14},  {11,4} };
-      g2.fill(makeShape(loc2));
-
-      setSize(22,24);
+      this.dbScroll = dbScroll;
+      this.panelSize = panelSize;
+      this.entry_source = entry_source;
     }
-  }
 
-  class TextButton extends JButton
-  {
-    private String s1;
-    private String s2;
-    private Color c;
-
-    public TextButton(String text)
+    public void run()
     {
-      this(text, Color.black);
+      final DatabaseJPanel dbPane = new DatabaseJPanel(entry_source,
+          null);
+      dbPane.setPreferredSize(panelSize);
+      dbScroll.setViewportView(dbPane);
     }
+  }
 
-    public TextButton(String text, Color c)
-    {
-      super();
-      this.s1 = text.substring(0);
-      this.s2 = text.substring(1);
-    }
 
-    public void paintComponent(Graphics g)
-    {
-      super.paintComponent(g);
-      Graphics2D g2 = (Graphics2D)g;
-      Font font = new Font("Monospaced", Font.BOLD, 14);
-      g2.setFont(font);
-
-      g2.setColor(c);
-      g2.drawString(s1,4,18);
-      g2.setColor(Color.red);
-      g2.drawString(s2,10,15);
-      setSize(22,24);
-    }
-  }
 
 
   public static void main(String args[])
@@ -612,5 +617,6 @@ public class LocalAndRemoteFileManager extends JFrame
     frame.pack();
     frame.setVisible(true);
   }
+  
 }