diff --git a/uk/ac/sanger/artemis/components/database/DatabaseTreeNode.java b/uk/ac/sanger/artemis/components/database/DatabaseTreeNode.java
index b938cc5272a21c26f171abf8efeca873d2ff7c99..be0527ace4f49692c3f89e149d5213020e1bd2fd 100644
--- a/uk/ac/sanger/artemis/components/database/DatabaseTreeNode.java
+++ b/uk/ac/sanger/artemis/components/database/DatabaseTreeNode.java
@@ -24,16 +24,20 @@
 
 package uk.ac.sanger.artemis.components.database;
 
+import java.awt.Frame;
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.UnsupportedFlavorException;
 
+import javax.swing.JFrame;
 import javax.swing.JOptionPane;
 import javax.swing.tree.DefaultMutableTreeNode;
 
 import org.gmod.schema.organism.Organism;
+import org.gmod.schema.organism.OrganismProp;
 import org.gmod.schema.sequence.Feature;
 
+import uk.ac.sanger.artemis.components.Splash;
 import uk.ac.sanger.artemis.util.DatabaseDocument;
 
 import java.io.File;
@@ -42,7 +46,9 @@ import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.io.IOException;
 import java.util.Hashtable;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 /**
 *
@@ -137,6 +143,42 @@ public class DatabaseTreeNode extends DefaultMutableTreeNode
 	  organismCommonName = getOrganism().getGenus() + "." + getOrganism().getSpecies();
   }
   
+  /**
+   * Use the OrganismProps to set the translation table and
+   * determine in this is a read only entry.
+   * @param op
+   * @return
+   */
+  public static boolean setOrganismProps(Set<OrganismProp> op)
+  {
+    Splash splash = getSplash();
+    boolean readOnly = false;
+    final Iterator<OrganismProp> it = op.iterator();
+    while (it.hasNext()) 
+    {
+      OrganismProp organismProp = it.next();
+      if(splash != null &&
+         organismProp.getCvTerm().getName().equals("translationTable"))
+        splash.setTranslationTable(organismProp.getValue());
+      
+     if(organismProp.getCvTerm().getName().equals("frozen") &&
+        organismProp.getValue().equals("yes"))
+       readOnly = true;
+    } 
+    return readOnly;
+  }
+  
+  private static Splash getSplash()
+  {
+    Frame[] frames = JFrame.getFrames();
+    for(int i=0;i<frames.length;i++)
+    {
+      if(frames[i] instanceof Splash)
+        return (Splash)frames[i];
+    }
+    return null;
+  }
+  
   /** @return   true if node is a directory */
   public boolean getAllowsChildren() { return !isLeaf; }
   /** @return         true if node is a file */
@@ -154,12 +196,12 @@ public class DatabaseTreeNode extends DefaultMutableTreeNode
     if(isLeaf)
       return;
     
-    List sequenceList = dbDoc.getResidueFeatures(new Integer(getOrganism().getOrganismId()));
-    Hashtable sequenceNode = new Hashtable();
+    List<Feature> sequenceList = dbDoc.getResidueFeatures(new Integer(getOrganism().getOrganismId()));
+    Hashtable<String, DatabaseTreeNode> sequenceNode = new Hashtable<String, DatabaseTreeNode>();
     
     for(int i=0;i<sequenceList.size(); i++)
     {
-      Feature f = (Feature)sequenceList.get(i);
+      Feature f = sequenceList.get(i);
       DatabaseTreeNode typeNode;
       if(!sequenceNode.containsKey(f.getCvTerm().getName()))
       {
@@ -248,7 +290,7 @@ public class DatabaseTreeNode extends DefaultMutableTreeNode
     DatabaseTreeNode.dbDoc = dbDoc;
   }
   
-  protected Organism getOrganism()
+  public Organism getOrganism()
   {
     if(organism == null && organismCommonName != null)
       organism = dbDoc.getOrganismByCommonName(organismCommonName);