diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailablePluginsBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailablePluginsBean.java
index f1be8d02406d5ff4fd1f33961a21b1714aecd59d..cfef25fd9cfd58bd69bd1c54517a1761baeb6e0a 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailablePluginsBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailablePluginsBean.java
@@ -2,11 +2,12 @@ package kieker.webgui.beans;
 
 import javax.faces.bean.ManagedBean;
 import javax.faces.bean.RequestScoped;
-import javax.faces.bean.SessionScoped;
 import org.primefaces.model.DefaultTreeNode;
 import org.primefaces.model.TreeNode;
 
 /**
+ * This bean can be used to store and read the currently available plugins for
+ * the current main project.
  *
  * @author Nils Christian Ehmke
  */
@@ -17,7 +18,7 @@ public class AvailablePluginsBean {
     public synchronized TreeNode getAvailablePluginsRoot() {
         TreeNode root = new DefaultTreeNode("Root", null);
 
-        final TreeNode readedNode = new DefaultTreeNode("Reader", root);
+        final TreeNode readerNode = new DefaultTreeNode("Reader", root);
         final TreeNode analysisPluginsNode = new DefaultTreeNode("AnalysisPlugins", root);
 
         return root;
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ProjectsBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailableProjectsBean.java
similarity index 74%
rename from Kieker.WebGUI/src/main/java/kieker/webgui/beans/ProjectsBean.java
rename to Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailableProjectsBean.java
index 1e6683965ef91e11227449cb83dd67b721398ca5..c3a44929378062e37d8b03c1dce12922bcf002cb 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ProjectsBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/AvailableProjectsBean.java
@@ -10,26 +10,27 @@ import org.primefaces.model.DefaultTreeNode;
 import org.primefaces.model.TreeNode;
 
 /**
+ * This bean can be used to handle all available projects within the program.
  *
  * @author Nils Christian Ehmke
  */
 @ManagedBean
 @ApplicationScoped
-public class ProjectsBean {
+public class AvailableProjectsBean {
 
     private final List<MIProject> projects;
     private final MAnalysisMetaModelFactory factory;
 
-    public ProjectsBean() {
+    public AvailableProjectsBean() {
         projects = new ArrayList<MIProject>();
         factory = new MAnalysisMetaModelFactory();
     }
 
     public synchronized boolean addProject(final String projectName) {
         final MIProject project = factory.createProject();
-    
+
         project.setName(projectName);
-        
+
         return projects.add(project);
     }
 
@@ -37,13 +38,9 @@ public class ProjectsBean {
         TreeNode root = new DefaultTreeNode("Root", null);
 
         for (final MIProject project : projects) {
-            final TreeNode projectNode = new DefaultTreeNode(project.getName(), root);
-            final TreeNode dependenciesNode = new DefaultTreeNode("Dependencies", projectNode);
-            final TreeNode usedPluginsNode = new DefaultTreeNode("Used Plugins", projectNode);
-
-            //  for (final String dependency : project.getDependencies()) {
-            //       final TreeNode dependencyNode = new DefaultTreeNode(dependency, dependenciesNode);
-            //   }
+            final TreeNode projectNode = new DefaultTreeNode("project", project, root);
+            final TreeNode dependenciesNode = new DefaultTreeNode("dependencies", "Dependencies", projectNode);
+            final TreeNode usedPluginsNode = new DefaultTreeNode("usedPlugins", "Used Plugins", projectNode);
         }
 
         return root;
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ComponentBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ComponentBean.java
deleted file mode 100644
index 3b47ebd4a4471ff061d1c5d91432e9cf353dc8c8..0000000000000000000000000000000000000000
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/ComponentBean.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package kieker.webgui.beans;
-
-import javax.faces.bean.ApplicationScoped;
-import javax.faces.bean.ManagedBean;
-import org.primefaces.model.DefaultTreeNode;
-import org.primefaces.model.TreeNode;
-
-/**
- *
- * @author Nils Christian Ehmke
- */
-@ManagedBean
-@ApplicationScoped
-public class ComponentBean {
-
-    private TreeNode root;
-
-    public ComponentBean() {
-        root = new DefaultTreeNode("Root", null);
-        TreeNode node0 = new DefaultTreeNode("Reader", root);
-        TreeNode node1 = new DefaultTreeNode("Analysis Plugins", root);
-
-        TreeNode node00 = new DefaultTreeNode("FSReader", node0);
-        TreeNode node01 = new DefaultTreeNode("JMXReader", node0);
-
-        TreeNode node10 = new DefaultTreeNode("DummyRecordConsumer", node1);
-        TreeNode node11 = new DefaultTreeNode("SilentCountingRecordConsumer", node1);
-        TreeNode node12 = new DefaultTreeNode("TraceEquivalenceClassFilter", node1);
-        TreeNode node13 = new DefaultTreeNode("ExecutionRecordTransformationFilter", node1);
-        TreeNode node14 = new DefaultTreeNode("ResourceUtilizationPlugin", node1);
-        TreeNode node15 = new DefaultTreeNode("TraceReconstructionPlugin", node1);
-        TreeNode node16 = new DefaultTreeNode("CPUGraphPlugin", node1);
-        TreeNode node17 = new DefaultTreeNode("SequenceDiagrammPlugin", node1);
-        TreeNode node18 = new DefaultTreeNode("DependencyGraphPlugin", node1);
-    }
-
-    public TreeNode getRoot() {
-        return root;
-    }
-}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentProjectBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentProjectBean.java
deleted file mode 100644
index 162bc70f308a0685fbd59fd5df61dfccac3ea094..0000000000000000000000000000000000000000
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentProjectBean.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package kieker.webgui.beans;
-
-import kieker.analysis.model.analysisMetaModel.MIProject;
-
-/**
- *
- * @author Nils Christian Ehmke
- */
-public class CurrentProjectBean {
-
-    private MIProject project;
-
-    public MIProject getProject() {
-        return project;
-    }
-
-    public void setProject(MIProject project) {
-        this.project = project;
-    }
-}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentSelectedPluginBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentSelectedPluginBean.java
deleted file mode 100644
index af89429067a375e74c2d4f6d3c64ca11eecb5c79..0000000000000000000000000000000000000000
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/CurrentSelectedPluginBean.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package kieker.webgui.beans;
-
-/**
- *
- * @author Nils Christian Ehmke
- */
-public class CurrentSelectedPluginBean {
-    
-}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/SelectedProjectBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/SelectedProjectBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..210602348d11fb71b07fe52bc8a90826e549eca6
--- /dev/null
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/SelectedProjectBean.java
@@ -0,0 +1,61 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package kieker.webgui.beans;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import kieker.analysis.model.analysisMetaModel.MIProject;
+import org.primefaces.model.TreeNode;
+
+/**
+ * This bean can be used to store the currently selected project and the current
+ * main project for the user.
+ *
+ * @author Nils Christian Ehmke
+ */
+@ManagedBean
+@SessionScoped
+public class SelectedProjectBean {
+
+    private TreeNode selectedNode;
+    private MIProject selectedProject;
+    private MIProject mainProject;
+
+    public MIProject getMainProject() {
+        return mainProject;
+    }
+
+    public void setMainProject(MIProject mainProject) {
+        this.mainProject = mainProject;
+        System.out.println("Mainproject:" + mainProject);
+    }
+
+    public MIProject getSelectedProject() {
+        return selectedProject;
+    }
+
+    public void setSelectedProject(MIProject selectedProject) {
+        this.selectedProject = selectedProject;
+        System.out.println("SelectedProject:" + selectedProject);
+    }
+
+    public TreeNode getSelectedNode() {
+        return selectedNode;
+    }
+
+    public void setSelectedNode(TreeNode selectedNode) {
+        this.selectedNode = selectedNode;
+        if (selectedNode != null && selectedNode.getData() instanceof MIProject) {
+            setSelectedProject((MIProject) selectedNode.getData());
+        } else {
+            setSelectedProject(null);
+        }
+        System.out.println("SelectedNode:" + selectedNode);
+    }
+
+    public String getColor(MIProject project) {
+        return (project == mainProject) ? "red" : "lightsteelblue";
+    }
+}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/StringBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/StringBean.java
index b14a57e282948636cde2f99a4bc84429f409698b..925e44bd7ba9bd0a1424ae34e16c0113bb27833f 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/StringBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/StringBean.java
@@ -4,6 +4,7 @@ import javax.faces.bean.ManagedBean;
 import javax.faces.bean.RequestScoped;
 
 /**
+ * This bean can be used to store a simple string.
  *
  * @author Nils Christian Ehmke
  */
@@ -13,6 +14,10 @@ public class StringBean {
 
     private String string;
 
+    public StringBean() {
+        this.string = "";
+    }
+
     public String getString() {
         return string;
     }
@@ -21,4 +26,7 @@ public class StringBean {
         this.string = string;
     }
 
+    public void clear() {
+        this.string = "";
+    }
 }
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/TreeBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/TreeBean.java
deleted file mode 100644
index 9f8112ae8f3eee49382417858af4c0966a8921d5..0000000000000000000000000000000000000000
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/TreeBean.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package kieker.webgui.beans;
-
-import javax.faces.bean.ApplicationScoped;
-import javax.faces.bean.ManagedBean;
-import org.primefaces.model.DefaultTreeNode;
-import org.primefaces.model.TreeNode;
-
-/**
- *
- * @author Nils Christian Ehmke
- */
-@ManagedBean
-@ApplicationScoped
-public class TreeBean {
-
-    private TreeNode root;
-
-    public TreeBean() {
-        root = new DefaultTreeNode("Root", null);
-        TreeNode node0 = new DefaultTreeNode("jPetStore Monitoring", root);
-        TreeNode node1 = new DefaultTreeNode("Bookstore Monitoring", root);
-
-        TreeNode node2 = new DefaultTreeNode("Dependency", node1);
-        TreeNode node3 = new DefaultTreeNode("Kieker.jar", node2);
-        TreeNode node4 = new DefaultTreeNode("Used Plugins", node1);
-
-        TreeNode node11 = new DefaultTreeNode("Reader", node4);
-        TreeNode node12 = new DefaultTreeNode("Analysis Plugins", node4);
-
-        TreeNode node5 = new DefaultTreeNode("FSReader", node11);
-        TreeNode node6 = new DefaultTreeNode("ResourceUtilizationPlugin", node12);
-        TreeNode node7 = new DefaultTreeNode("TraceReconstructionPlugin", node12);
-        TreeNode node8 = new DefaultTreeNode("CPUGraphPlugin", node12);
-        TreeNode node9 = new DefaultTreeNode("SequenceDiagrammPlugin", node12);
-        TreeNode node10 = new DefaultTreeNode("DependencyGraphPlugin", node12);
-    }
-
-    public TreeNode getRoot() {
-        return root;
-    }
-}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/converter/MIProjectToStringConverter.java b/Kieker.WebGUI/src/main/java/kieker/webgui/converter/MIProjectToStringConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..62af7d4fff49858c32d84e0d506df1130a012f1f
--- /dev/null
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/converter/MIProjectToStringConverter.java
@@ -0,0 +1,27 @@
+package kieker.webgui.converter;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.FacesConverter;
+import kieker.analysis.model.analysisMetaModel.MIProject;
+
+/**
+ * This converter can be used to convert an instance of <i>MIProject</i> to a
+ * human readle string, but <b>not</b> vice versa.
+ *
+ * @author Nils Christian Ehmke
+ */
+@FacesConverter(value = "kieker.webgui.converter.MIProjectToStringConverter")
+public class MIProjectToStringConverter implements Converter {
+
+    @Override
+    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
+        return null;
+    }
+
+    @Override
+    public String getAsString(FacesContext fc, UIComponent uic, Object o) {
+        return (o == null || !(o instanceof MIProject)) ? null : ((MIProject) o).getName();
+    }
+}
diff --git a/Kieker.WebGUI/src/main/webapp/main.xhtml b/Kieker.WebGUI/src/main/webapp/main.xhtml
index 0daec44e25ab02b578a165da9d845d3e4dc49db7..f90aa6285b185ca4a23ef956cb1898a7f6a06056 100644
--- a/Kieker.WebGUI/src/main/webapp/main.xhtml
+++ b/Kieker.WebGUI/src/main/webapp/main.xhtml
@@ -32,45 +32,50 @@
                 <p:layoutUnit position="north" size="60" collapsible="false"> 
                     <h:form>
                         <p:menubar style="font-size: 15px">  
-                            <p:submenu label="Projects">
+                            <p:submenu label="File">
                                 <p:menuitem value="New Project" onclick="NewProjectDialog.show();" ajax="true" update="ProjectsList"/>
-                                <p:menuitem value="Save Project"/>
-                                <p:separator /> 
-                                <p:menuitem value="Delete Project"/>
                             </p:submenu>
 
                             <p:submenu label="Help">
                                 <p:menuitem value="About..." onclick="AboutDialog.show();"/>
                             </p:submenu>
-                           
+
                         </p:menubar>
-                       
+
                     </h:form>
                 </p:layoutUnit> 
 
                 <!-- The following layout is at the left side of the page and shows the available projects. -->
                 <p:layoutUnit style="font-size:15px" header="Projects" collapsible="true" position="west" size="200" resizable="true"  minSize="100">  
                     <h:form id="ProjectsList">
-                        <p:tree id="ProjectsListTree" selectionMode="single" style="width: auto" value="#{projectsBean.projectsRoot}" var="node" >  
-                            <p:treeNode>  
+                        <p:tree selection="#{selectedProjectBean.selectedNode}" id="ProjectsListTree" selectionMode="single" style="width: auto" value="#{availableProjectsBean.projectsRoot}" var="node" >   
+                            <p:treeNode type="project">  
+                                <h:outputText style="color: #{selectedProjectBean.getColor(node)}" value="#{node}">
+                                    <f:converter converterId="kieker.webgui.converter.MIProjectToStringConverter"/>
+                                </h:outputText>
+                            </p:treeNode>  
+                            <p:treeNode type="dependencies">  
+                                <h:outputText value="#{node}"/>
+                            </p:treeNode>  
+                            <p:treeNode type="usedPlugins">  
                                 <h:outputText value="#{node}"/>
                             </p:treeNode>  
                         </p:tree>
 
                         <p:contextMenu style="font-size:15px" for="ProjectsListTree">  
-                            <p:menuitem value="Set as Main Project" update="ProjectsList"/>  
+                            <p:menuitem value="Set as Main Project" action="#{selectedProjectBean.setMainProject(selectedProjectBean.getSelectedProject())}" update="ProjectsListTree"/>  
                             <p:menuitem value="Save Project" update="ProjectsList"/>  
                             <p:separator/>
                             <p:menuitem value="Delete Project" />  
                         </p:contextMenu> 
-                       
+
                     </h:form>
 
                 </p:layoutUnit>  
 
                 <!-- The following layout unit is within the center and used for the graph. -->
                 <p:layoutUnit style="font-size:15px"  position="center">  
-                   
+
                 </p:layoutUnit>  
 
                 <!-- The following layout unit is located at the bottom and will be used for properties. -->
@@ -127,12 +132,14 @@
             <a href="https://se.informatik.uni-kiel.de/kieker/">https://se.informatik.uni-kiel.de/kieker/</a>
         </p:dialog>
 
-        <p:dialog header="New Project" resizable="false" modal="true" style="font-size: 15px;width: auto" widgetVar="NewProjectDialog">
+        <p:dialog id="NewProjectDialog" header="New Project" resizable="false" modal="true" style="font-size: 15px;width: auto" widgetVar="NewProjectDialog" >
+            <p:ajax event="close" update="NewProjectDialog" listener="#{stringBean.clear()}" />  
+
             <h:form>
                 <h:outputText value="Please enter the name of the new project: " /><br/><br/>
                 <center>
-                    <p:inputText style="width: 90%" value="#{stringBean.string}" /><br/><br/>
-                    <p:commandButton value="Submit" action="#{projectsBean.addProject(stringBean.string)}" update="ProjectsList" oncomplete="NewProjectDialog.hide();"/>
+                    <p:inputText id="NewProjectInput" style="width: 90%" value="#{stringBean.string}" /><br/><br/>
+                    <p:commandButton value="Submit" action="#{availableProjectsBean.addProject(stringBean.string)}" update="ProjectsList" oncomplete="NewProjectDialog.hide();"/>
                 </center>
             </h:form>
         </p:dialog>