diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/ComponentMaintenancePanel.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/ComponentMaintenancePanel.java
index 1283d8b827747033ced1065ce160871cf55328f9..1564b4e70afb3beaa23ad2c0300db8f04022be92 100644
--- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/ComponentMaintenancePanel.java
+++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/ComponentMaintenancePanel.java
@@ -10,6 +10,7 @@ import nl.astron.lofar.sas.otb.MainFrame;
 import nl.astron.lofar.sas.otb.jotdb2.jOTDBparam;
 import nl.astron.lofar.sas.otb.jotdb2.jVICnodeDef;
 import nl.astron.lofar.sas.otb.util.UserAccount;
+import nl.astron.lofar.sas.otb.util.treemanagers.OTDBParamTreeManager;
 import nl.astron.lofar.sas.otb.util.treenodes.TreeNode;
 import nl.astron.lofar.sas.otbcomponents.ComponentPanel;
 import nl.astron.lofar.sas.otbcomponents.VICnodeDefViewPanel;
@@ -73,34 +74,13 @@ public class ComponentMaintenancePanel extends javax.swing.JPanel
     public void setNewRootNode(){
         logger.debug("SetNewRootNode for component: "+itsComponentID);
         try {
-            jOTDBparam aParam =null;
-            jVICnodeDef aVICnodeDef=null;
-            if (itsComponentID == 0 ) {
-                // create a sample component param
-                aParam = new jOTDBparam(0,0,0);
-                aParam.name = "No ParamSelection";
-            } else {
-                aVICnodeDef = itsMainFrame.getSharedVars().getOTDBrmi().getRemoteMaintenance().getComponentNode(itsComponentID);
-                if (aVICnodeDef != null) {
-                    // create a fake param to pass to componentTree, to simulate a node param
-                    aParam = new jOTDBparam(0,itsComponentID,0);
-                    aParam.name="#"+aVICnodeDef.name;
-                    aParam.index=0;
-                    aParam.limits="";
-                    aParam.type=-1;
-                    aParam.unit=-1;
-                    aParam.description="";
-                } else {
-                    logger.debug("failed to get ComponentNode");
-                }
-            }
-            
-            // put the param in a wrapper for the tree
-            TreeNode rootNode = new TreeNode(aParam,aParam.name);
+            OTDBParamTreeManager treeManager = OTDBParamTreeManager.getInstance(itsMainFrame.getUserAccount());
             
             itsMainFrame.setHourglassCursor();
             // and create a new root
-            treePanel.newRootNode(rootNode);
+            String[] args = new String[1];
+            args[0]= ""+ itsComponentID;            
+            treePanel.newRootNode(treeManager.getRootNode(args));
             itsMainFrame.setNormalCursor();
         } catch (Exception e) {
             logger.debug("Exception during setNewRootNode: " + e);
diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/ResultBrowserPanel.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/ResultBrowserPanel.java
index 309fac1d17506b2fc0c851a9b1f25d4af7e4214b..718d40b20c255a7f1ad7ab592e30562e8b592516 100644
--- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/ResultBrowserPanel.java
+++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/ResultBrowserPanel.java
@@ -7,6 +7,8 @@
 package nl.astron.lofar.sas.otb.panels;
 
 import java.rmi.RemoteException;
+import javax.swing.event.TreeModelEvent;
+import javax.swing.event.TreeModelListener;
 import org.apache.log4j.Logger;
 import nl.astron.lofar.sas.otb.MainFrame;
 import nl.astron.lofar.sas.otb.jotdb2.jOTDBnode;
@@ -14,6 +16,8 @@ import nl.astron.lofar.sas.otb.jotdb2.jOTDBparam;
 import nl.astron.lofar.sas.otb.jotdb2.jOTDBtree;
 import nl.astron.lofar.sas.otb.util.UserAccount;
 import nl.astron.lofar.sas.otb.util.jParmDBnode;
+import nl.astron.lofar.sas.otb.util.treemanagers.OTDBNodeTreeManager;
+import nl.astron.lofar.sas.otb.util.treemanagers.ParmDBTreeManager;
 import nl.astron.lofar.sas.otb.util.treenodes.TreeNode;
 import nl.astron.lofar.sas.otbcomponents.TreeInfoDialog;
 
@@ -111,19 +115,32 @@ public class ResultBrowserPanel extends javax.swing.JPanel
     public void setNewRootNode() {
         
         try {
-            jOTDBnode otdbNode=null;
-            if (itsTreeID == 0 ) {
-                // create a sample root node.
-                otdbNode = new jOTDBnode(0,0,0,0);
-                otdbNode.name = "No TreeSelection";
-            } else {
-                otdbNode = itsMainFrame.getSharedVars().getOTDBrmi().getRemoteMaintenance().getTopNode(itsTreeID);
-            }
-            TreeNode rootNode = new TreeNode(otdbNode,otdbNode.name);
-            logger.trace("setNewRootNode: " + otdbNode.name);
+            OTDBNodeTreeManager treeManager = OTDBNodeTreeManager.getInstance(itsMainFrame.getUserAccount());
+            treeManager.addTreeModelListener(new TreeModelListener(){
+                public void treeStructureChanged(TreeModelEvent e){}
+                public void treeNodesRemoved(TreeModelEvent e){}
+                public void treeNodesChanged(TreeModelEvent e){}
+                public void treeNodesInserted(TreeModelEvent e){
+                    TreeNode item = (TreeNode)e.getSource();
+                    if(item.getName().equalsIgnoreCase("Observation.AO")){
+                        String[] args = new String[2];
+                        args[0]="ParmDB";
+                        args[1]="BBS";
+                        TreeNode parmDBnode =ParmDBTreeManager.getInstance(itsMainFrame.getUserAccount()).getRootNode(args);
+                        
+                        item.add(parmDBnode);
+                    }
+                }
+                
+                
+            });
+            
+            
             itsMainFrame.setHourglassCursor();
             // and create a new root
-            treePanel.newRootNode(rootNode);
+            String[] args = new String[1];
+            args[0]= ""+ itsTreeID;
+            treePanel.newRootNode(treeManager.getRootNode(args));
             itsMainFrame.setNormalCursor();
         } catch (Exception e) {
             logger.debug("Exception during setNewRootNode: " + e);
@@ -261,7 +278,7 @@ public class ResultBrowserPanel extends javax.swing.JPanel
             
             if(treeNode.getUserObject() instanceof jOTDBnode){
                 changeTreeSelection((jOTDBnode)treeNode.getUserObject());
-            
+                
             } else if(treeNode.getUserObject() instanceof jParmDBnode){
                 jParmDBnode selectedNode = (jParmDBnode)treeNode.getUserObject();
                 logger.debug("selected ParmDB node: "+selectedNode.name);
@@ -269,21 +286,19 @@ public class ResultBrowserPanel extends javax.swing.JPanel
                 int savedSelection=jTabbedPane1.getSelectedIndex();
                 logger.debug("ChangeSelection for node: " + selectedNode.name);
                 //itsSelectedNode=selectedNode;
-                    
-                    jTabbedPane1.removeTabAt(0);
-                    jTabbedPane1.insertTab("ParmDBPlotter",null,parmDBPlotPanel1,"",0);
-                    parmDBPlotPanel1.setParam(selectedNode.nodeID());
-                    
-               
+                
+                jTabbedPane1.removeTabAt(0);
+                jTabbedPane1.insertTab("ParmDBPlotter",null,parmDBPlotPanel1,"",0);
+                parmDBPlotPanel1.setParam(selectedNode.nodeID());
+                
+                
                 //logParamPanel1.setNode(aNode);
-            jTabbedPane1.setSelectedIndex(0);
+                jTabbedPane1.setSelectedIndex(0);
+            }
             
-            //changeTreeSelection(((ParmDBTreeNode)evt.getNewLeadSelectionPath().getLastPathComponent()).getParmDBnode());
         }
-        
-    }
     }//GEN-LAST:event_treePanelValueChanged
-
+    
     private void buttonPanel1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPanel1ActionPerformed
         logger.debug("actionPerformed: " + evt);
         
diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/SamplePanel.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/SamplePanel.java
index b78a33b77ccfece6c2fe614c07e164e620bf6fb0..7f1985b3a83bfa1973ccfc9564a278c07e659534 100644
--- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/SamplePanel.java
+++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/SamplePanel.java
@@ -9,6 +9,7 @@ package nl.astron.lofar.sas.otb.panels;
 import org.apache.log4j.Logger;
 import nl.astron.lofar.sas.otb.MainFrame;
 import nl.astron.lofar.sas.otb.jotdb2.jOTDBnode;
+import nl.astron.lofar.sas.otb.util.treemanagers.OTDBNodeTreeManager;
 import nl.astron.lofar.sas.otb.util.treenodes.TreeNode;
 
 
@@ -57,7 +58,9 @@ public class SamplePanel extends javax.swing.JPanel
         // put the OTDBnode in a wrapper for the tree
         //OTDBtreeNode otdbTreeNode = new OTDBtreeNode(otdbNode, itsMainFrame.getOTDBrmi());
         // example of an empty tree
-        TreeNode otdbTreeNode = new TreeNode(otdbNode);
+         OTDBNodeTreeManager treeManager = OTDBNodeTreeManager.getInstance(itsMainFrame.getUserAccount());
+          
+        TreeNode otdbTreeNode = new TreeNode(treeManager,otdbNode);
 
         itsMainFrame.setHourglassCursor();
         // and create a new root
@@ -353,7 +356,7 @@ public class SamplePanel extends javax.swing.JPanel
             otdbNode.name = "Node_" + treeCounter++;
 
             // put the OTDBnode in a wrapper for the tree
-            TreeNode otdbTreeNode = new TreeNode(otdbNode);
+            TreeNode otdbTreeNode = new TreeNode(OTDBNodeTreeManager.getInstance(itsMainFrame.getUserAccount()),otdbNode);
             
             // and create a new root
             treePanel.newRootNode(otdbTreeNode);
diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/TemplateConstructionPanel.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/TemplateConstructionPanel.java
index 972925d6e8b0a351e7a282e232fa01b06563bf2b..ac49d3d8e99d06f7efb99607336415643d7c0ff0 100644
--- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/TemplateConstructionPanel.java
+++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/TemplateConstructionPanel.java
@@ -6,9 +6,8 @@
 
 package nl.astron.lofar.sas.otb.panels;
 import nl.astron.lofar.sas.otb.MainFrame;
-import nl.astron.lofar.sas.otb.jotdb2.jOTDBnode;
 import nl.astron.lofar.sas.otb.util.UserAccount;
-import nl.astron.lofar.sas.otb.util.treenodes.TreeNode;
+import nl.astron.lofar.sas.otb.util.treemanagers.OTDBNodeTreeManager;
 import org.apache.log4j.Logger;
 
 /**
@@ -76,22 +75,16 @@ public class TemplateConstructionPanel extends javax.swing.JPanel
     
     public void setNewRootNode(){
         try {
-            jOTDBnode otdbNode=null;
-            if (itsTreeID == 0 ) {
-                // create a sample root node.
-                otdbNode = new jOTDBnode(0,0,0,0);
-                otdbNode.name = "No TreeSelection";
-            } else {
-                otdbNode = itsMainFrame.getSharedVars().getOTDBrmi().getRemoteMaintenance().getTopNode(itsTreeID);
-            }
-        
-            // put the OTDBnode in a wrapper for the tree
-            TreeNode rootNode = new TreeNode(otdbNode);
-
+            
+            OTDBNodeTreeManager treeManager = OTDBNodeTreeManager.getInstance(itsMainFrame.getUserAccount());
+            
             itsMainFrame.setHourglassCursor();
             // and create a new root
-            treePanel.newRootNode(rootNode);
+            String[] args = new String[1];
+            args[0]= ""+ itsTreeID;
+            treePanel.newRootNode(treeManager.getRootNode(args));
             itsMainFrame.setNormalCursor();
+            
         } catch (Exception e) {
             logger.debug("Exception during setNewRootNode: " + e);
         }
diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/TemplateMaintenancePanel.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/TemplateMaintenancePanel.java
index 553b78cc536d9d74e57a1c347f1ddbe921fadabe..6a52e713250bb90e8048882579426ffb7a8e5fcc 100644
--- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/TemplateMaintenancePanel.java
+++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/panels/TemplateMaintenancePanel.java
@@ -13,6 +13,7 @@ import nl.astron.lofar.sas.otb.jotdb2.jOTDBnode;
 import nl.astron.lofar.sas.otb.jotdb2.jOTDBparam;
 import nl.astron.lofar.sas.otb.jotdb2.jOTDBtree;
 import nl.astron.lofar.sas.otb.util.UserAccount;
+import nl.astron.lofar.sas.otb.util.treemanagers.OTDBNodeTreeManager;
 import nl.astron.lofar.sas.otb.util.treenodes.TreeNode;
 import nl.astron.lofar.sas.otbcomponents.TreeInfoDialog;
 import org.apache.log4j.Logger;
@@ -80,19 +81,13 @@ public class TemplateMaintenancePanel extends javax.swing.JPanel
     
     public void setNewRootNode(){
         try {
-            jOTDBnode otdbNode=null;
-            if (itsTreeID == 0 ) {
-                // create a sample root node.
-                otdbNode = new jOTDBnode(0,0,0,0);
-                otdbNode.name = "No TreeSelection";
-            } else {
-                otdbNode = itsMainFrame.getSharedVars().getOTDBrmi().getRemoteMaintenance().getTopNode(itsTreeID);
-            }
-            TreeNode rootNode = new TreeNode(otdbNode);
-
+            OTDBNodeTreeManager treeManager = OTDBNodeTreeManager.getInstance(itsMainFrame.getUserAccount());
+            
             itsMainFrame.setHourglassCursor();
             // and create a new root
-            treePanel.newRootNode(rootNode);
+            String[] args = new String[1];
+            args[0]= ""+ itsTreeID;
+            treePanel.newRootNode(treeManager.getRootNode(args));
             itsMainFrame.setNormalCursor();
         } catch (Exception e) {
             logger.debug("Exception during setNewRootNode: " + e);