diff --git a/Kieker.WebGUI/lib/kieker-1.6-SNAPSHOT_emf.jar b/Kieker.WebGUI/lib/kieker-1.6-SNAPSHOT_emf.jar
index 3e3f56ed47646c6fe7c628362c8def97ee54533e..4f2a182d6a0105730fc16fd92b1d5b3e3ae9db1d 100644
Binary files a/Kieker.WebGUI/lib/kieker-1.6-SNAPSHOT_emf.jar and b/Kieker.WebGUI/lib/kieker-1.6-SNAPSHOT_emf.jar differ
diff --git a/Kieker.WebGUI/pom.xml b/Kieker.WebGUI/pom.xml
index 516c51daceff92e8d4141f663a98dfefeb91fd2d..6b139ce6b27a2ee1a803732f16601d9702ba654c 100644
--- a/Kieker.WebGUI/pom.xml
+++ b/Kieker.WebGUI/pom.xml
@@ -86,157 +86,157 @@
         <dependency>
             <groupId>org.primefaces</groupId>
             <artifactId>primefaces</artifactId>
-            <version>3.4.RC1</version>
+            <version>3.4.1</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>black-tie</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>blitzer</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>bluesky</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>casablanca</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>cupertino</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>dark-hive</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>dot-luv</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>eggplant</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>excite-bike</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>flick</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>hot-sneaks</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>humanity</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>le-frog</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>midnight</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>mint-choc</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>overcast</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>pepper-grinder</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>redmond</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>rocket</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>sam</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>smoothness</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>south-street</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>start</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>sunny</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>swanky-purse</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>trontastic</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>ui-darkness</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>ui-lightness</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>vader</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>org.primefaces.themes</groupId>
             <artifactId>glass-x</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.8</version>
         </dependency>
         <dependency>
             <groupId>kieker</groupId>
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/GlobalPropertiesBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/GlobalPropertiesBean.java
index 0b33538d0ff6041ca6a293dad5dd3545c45bda56..2a1a7c1275ad46b8e304a3bccc9335a5ab2a0125 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/GlobalPropertiesBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/GlobalPropertiesBean.java
@@ -37,15 +37,20 @@ import kieker.common.logging.LogFactory;
 @ApplicationScoped
 public final class GlobalPropertiesBean {
 
+	private static final Log LOG = LogFactory.getLog(GlobalPropertiesBean.class);
+
 	private static final String PROPERTIES_FILE_GLOBAL = "global.properties";
-	private static final String PROPERTY_FACES_CONTEXT_THEME_KEY = "kieker.webgui.theme.facesContextKey";
-	private static final String PROPERTY_THEME_COOKIE_NAME = "kieker.webgui.theme.cookieName";
-	private static final String PROPERTY_DEFAULT_THEME = "kieker.webgui.theme.defaultTheme";
+
+	private static final String PROPERTY_FACES_CONTEXT_THEME_KEY = "kieker.webgui.config.lookAndFeel.facesContextKey";
+	private static final String PROPERTY_THEME_COOKIE_NAME = "kieker.webgui.config.lookAndFeel.cookieName";
+	private static final String PROPERTY_DEFAULT_THEME = "kieker.webgui.config.lookAndFeel.defaultTheme";
 	private static final String PROPERTY_PROJECT_OVERVIEW_PAGE = "kieker.webgui.page.projectOverview";
 	private static final String PROPERTY_WELCOME_MESSAGE = "kieker.webgui.common.welcomeMessage";
 	private static final String PROPERTY_SHORT_WELCOME_MESSAGE = "kieker.webgui.common.shortWelcomeMessage";
-
-	private static final Log LOG = LogFactory.getLog(GlobalPropertiesBean.class);
+	private static final String PROPERTY_ANALYSIS_EDITOR_GRID_SIZE_COOKIE_NAME = "kieker.webgui.config.analysisEditor.gridSize.cookieName";
+	private static final String PROPERTY_ANALYSIS_EDITOR_GRID_COLOR_COOKIE_NAME = "kieker.webgui.config.analysisEditor.gridColor.cookieName";
+	private static final String PROPERTY_ANALYSIS_EDITOR_DEFAULT_GRID_SIZE = "kieker.webgui.config.analysisEditor.defaultGridSize";
+	private static final String PROPERTY_ANALYSIS_EDITOR_DEFAULT_GRID_COLOR = "kieker.webgui.config.analysisEditor.defaultGridColor";
 
 	private final Properties globalProperties = new Properties();
 
@@ -91,7 +96,7 @@ public final class GlobalPropertiesBean {
 	}
 
 	/**
-	 * Delivers the key name of the theme within the faces context.
+	 * Delivers the redirecting-link to the project overview page.
 	 * 
 	 * @return The value of the property.
 	 */
@@ -116,4 +121,40 @@ public final class GlobalPropertiesBean {
 	public String getShortWelcomeMessage() {
 		return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_SHORT_WELCOME_MESSAGE);
 	}
+
+	/**
+	 * Delivers the name of the cookie for the grid size within the analysis editor.
+	 * 
+	 * @return The value of the property.
+	 */
+	public String getAnalysisEditorGridSizeCookieName() {
+		return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_ANALYSIS_EDITOR_GRID_SIZE_COOKIE_NAME);
+	}
+
+	/**
+	 * Delivers the name of the cookie for the grid color within the analysis editor.
+	 * 
+	 * @return The value of the property.
+	 */
+	public String getAnalysisEditorGridColorCookieName() {
+		return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_ANALYSIS_EDITOR_GRID_COLOR_COOKIE_NAME);
+	}
+
+	/**
+	 * Delivers the default grid size within the analysis editor.
+	 * 
+	 * @return The value of the property.
+	 */
+	public String getAnalysisEditorDefaultGridSize() {
+		return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_ANALYSIS_EDITOR_DEFAULT_GRID_SIZE);
+	}
+
+	/**
+	 * Delivers the default grid color within the analysis editor.
+	 * 
+	 * @return The value of the property.
+	 */
+	public String getAnalysisEditorDefaultGridColor() {
+		return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_ANALYSIS_EDITOR_DEFAULT_GRID_COLOR);
+	}
 }
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/ProjectsBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/ProjectsBean.java
index 8905b673a17cd4d2f83f8e0379a759a9cd4437d3..d2273bd0230aa54960211c045ff511335f8923ed 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/ProjectsBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/ProjectsBean.java
@@ -72,7 +72,7 @@ public final class ProjectsBean {
 	 * This method does some initialization work after construction. <b>Do not call this method. The method is managed by the class loader.</b>
 	 */
 	@PostConstruct
-	protected void init() {
+	protected void initialize() {
 		// Load a list with all available projects on the FS
 		this.projects.addAll(this.projectManagerFacade.listAllProjects());
 	}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/ThemeSwitcherBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/ThemeSwitcherBean.java
index fa24366db25fa732d882b4a6943e5d8672f2224a..1edbb59b835ebc32a92d838748a85daf666d6b36 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/ThemeSwitcherBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/ThemeSwitcherBean.java
@@ -62,7 +62,7 @@ public final class ThemeSwitcherBean {
 	 * new themes to the program, this is the right place.
 	 */
 	@PostConstruct
-	protected void init() {
+	protected void initialize() {
 		this.themes.put("Aristo", "aristo");
 		this.themes.put("Black-Tie", "black-tie");
 		this.themes.put("Blitzer", "blitzer");
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/StringBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/StringBean.java
index 73e3ec17089f7514be04a58646dcad9884b5b336..670ede8f97aa78d4a32d53e867f016f9be9ab316 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/StringBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/request/StringBean.java
@@ -29,11 +29,8 @@ import javax.faces.bean.RequestScoped;
  */
 @ManagedBean
 @RequestScoped
-public class StringBean {
+public final class StringBean {
 
-	/**
-	 * The string instance stored within this bean.
-	 */
 	private String string;
 
 	/**
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentConfigurationBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentConfigurationBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..b81594070c46c1ab11619eedc55370765c27ec46
--- /dev/null
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentConfigurationBean.java
@@ -0,0 +1,223 @@
+/***************************************************************************
+ * Copyright 2012 by
+ *  + Christian-Albrechts-University of Kiel
+ *    + Department of Computer Science
+ *      + Software Engineering Group 
+ *  and others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***************************************************************************/
+
+package kieker.webgui.beans.session;
+
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
+
+import kieker.webgui.beans.application.GlobalPropertiesBean;
+
+/**
+ * The class {@link CurrentConfigurationBean} is a session-scoped JSF bean, containing the properties and configurations of the current (session) user.<br>
+ * It is session-scoped as only one instance per user is necessary.
+ * 
+ * @author Nils Christian Ehmke
+ * @version 1.0
+ */
+@ManagedBean
+@SessionScoped
+public final class CurrentConfigurationBean {
+
+	private String lookAndFeel;
+	private String gridColor;
+	private int gridSize;
+
+	@ManagedProperty(value = "#{globalPropertiesBean}")
+	private GlobalPropertiesBean globalPropertiesBean;
+
+	/**
+	 * Default constructor. <b>Do not use this constructor. This bean is JSF managed.</b>
+	 */
+	public CurrentConfigurationBean() {
+		// No code necessary
+	}
+
+	/**
+	 * This method initializes the bean. In fact it loads the default values before trying to load the values of the user from their cookies. <b>Do not call this
+	 * method. The method is managed by the class loader.</b>
+	 */
+	@PostConstruct
+	protected void initialize() {
+		this.loadDefaultValues();
+		this.loadValuesFromCookies();
+	}
+
+	/**
+	 * The getter for the property {@link CurrentConfigurationBean#globalPropertiesBean}.
+	 * 
+	 * @return The current value for the property.
+	 */
+	public GlobalPropertiesBean getGlobalPropertiesBean() {
+		synchronized (this) {
+			return this.globalPropertiesBean;
+		}
+	}
+
+	/**
+	 * The setter for the property {@link CurrentConfigurationBean#globalPropertiesBean}.
+	 * 
+	 * @param globalPropertiesBean
+	 *            The new value for the property.
+	 */
+	public void setGlobalPropertiesBean(final GlobalPropertiesBean globalPropertiesBean) {
+		synchronized (this) {
+			this.globalPropertiesBean = globalPropertiesBean;
+		}
+	}
+
+	/**
+	 * The getter for the property {@link CurrentConfigurationBean#lookAndFeel}.
+	 * 
+	 * @return The current value for the property.
+	 */
+	public String getLookAndFeel() {
+		synchronized (this) {
+			return this.lookAndFeel;
+		}
+	}
+
+	/**
+	 * The setter for the property {@link CurrentConfigurationBean#lookAndFeel}.
+	 * 
+	 * @param lookAndFeel
+	 *            The new value for the property.
+	 */
+	public void setLookAndFeel(final String lookAndFeel) {
+		synchronized (this) {
+			this.lookAndFeel = lookAndFeel;
+			CurrentConfigurationBean.saveValueInCookie(this.globalPropertiesBean.getThemeCookieName(), lookAndFeel);
+		}
+	}
+
+	/**
+	 * The getter for the property {@link CurrentConfigurationBean#gridColor}.
+	 * 
+	 * @return The current value for the property.
+	 */
+	public String getGridColor() {
+		synchronized (this) {
+			return this.gridColor;
+		}
+	}
+
+	/**
+	 * The setter for the property {@link CurrentConfigurationBean#gridColor}.
+	 * 
+	 * @param gridColor
+	 *            The new value for the property.
+	 */
+	public void setGridColor(final String gridColor) {
+		synchronized (this) {
+			this.gridColor = gridColor;
+			CurrentConfigurationBean.saveValueInCookie(this.globalPropertiesBean.getAnalysisEditorGridColorCookieName(), gridColor);
+		}
+	}
+
+	/**
+	 * The getter for the property {@link CurrentConfigurationBean#gridSize}.
+	 * 
+	 * @return The current value for the property.
+	 */
+	public int getGridSize() {
+		synchronized (this) {
+			return this.gridSize;
+		}
+	}
+
+	/**
+	 * The setter for the property {@link CurrentConfigurationBean#gridSize}.
+	 * 
+	 * @param gridSize
+	 *            The new value for the property.
+	 */
+	public void setGridSize(final int gridSize) {
+		synchronized (this) {
+			this.gridSize = gridSize;
+			CurrentConfigurationBean.saveValueInCookie(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName(), Integer.toString(gridSize));
+		}
+	}
+
+	/**
+	 * This method tries to load the default values of the properties from the {@link GlobalPropertiesBean} and the faces context.
+	 */
+	private void loadDefaultValues() {
+		synchronized (this) {
+			// Get the parameters within the current context.
+			final Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); // NOPMD (No concurrent access)
+			// Try to find the default theme within the parameters.
+			if (params.containsKey(this.globalPropertiesBean.getFacesContextThemeKey())) {
+				this.lookAndFeel = params.get(this.globalPropertiesBean.getFacesContextThemeKey());
+			} else {
+				// Use the default theme.
+				this.lookAndFeel = this.globalPropertiesBean.getDefaultTheme();
+			}
+
+			this.gridColor = this.globalPropertiesBean.getAnalysisEditorDefaultGridColor();
+			this.gridSize = Integer.parseInt(this.globalPropertiesBean.getAnalysisEditorDefaultGridSize());
+		}
+	}
+
+	/**
+	 * This method tries to load the values of the properties from the user's cookies.
+	 */
+	private void loadValuesFromCookies() {
+		synchronized (this) {
+			// Get the available cookies
+			final Map<String, Object> cookies = FacesContext.getCurrentInstance().getExternalContext().getRequestCookieMap(); // NOPMD (No concurrent access)
+
+			// Now load the values if available
+			if (cookies.containsKey(this.globalPropertiesBean.getThemeCookieName())) {
+				this.lookAndFeel = ((Cookie) cookies.get(this.globalPropertiesBean.getThemeCookieName())).getValue();
+			}
+			if (cookies.containsKey(this.globalPropertiesBean.getAnalysisEditorGridColorCookieName())) {
+				this.gridColor = ((Cookie) cookies.get(this.globalPropertiesBean.getAnalysisEditorGridColorCookieName())).getValue();
+			}
+			if (cookies.containsKey(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName())) {
+				this.gridSize = Integer.parseInt(((Cookie) cookies.get(this.globalPropertiesBean.getAnalysisEditorGridSizeCookieName())).getValue());
+			}
+		}
+	}
+
+	/**
+	 * This method saves the given values in a cookie with the given name, using the maximal available age for the cookie.
+	 * 
+	 * @param cookieName
+	 *            The name of the cookie.
+	 * @param cookieValue
+	 *            The value for the cookie.
+	 */
+	private static void saveValueInCookie(final String cookieName, final String cookieValue) {
+		// Create the cookie and make sure that it will be saved for a year (maximum age)
+		final Cookie cookie = new Cookie(cookieName, cookieValue);
+		cookie.setMaxAge(60 * 60 * 24 * 365);
+
+		// Deliver the cookie
+		final HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
+		response.addCookie(cookie);
+	}
+}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentThemeBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentThemeBean.java
deleted file mode 100644
index 741ae8c04d453aaf43d30540e73d94afef9f72a2..0000000000000000000000000000000000000000
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/CurrentThemeBean.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/***************************************************************************
- * Copyright 2012 Kieker Project (http://kieker-monitoring.net)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ***************************************************************************/
-
-package kieker.webgui.beans.session;
-
-import java.io.Serializable;
-import java.util.Map;
-
-import javax.faces.bean.ManagedBean;
-import javax.faces.bean.SessionScoped;
-import javax.faces.context.FacesContext;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * The {@link CurrentThemeBean} contains the current user theme (look and feel) of the (session) user. The default value is the "glass-x"-theme, if no other value
- * can be found within the parameters of the faces context or in the cookies of the user. Every change of the theme will also result in storing the new theme within
- * the cookies of the user.<br>
- * As the theme can be chosen by every user on his own, this class is a session scoped bean.
- * 
- * @author Nils Christian Ehmke
- * 
- * @version 1.0
- */
-@ManagedBean
-@SessionScoped
-public final class CurrentThemeBean implements Serializable {
-
-	/**
-	 * The serial version UID.
-	 */
-	private static final long serialVersionUID = 2919719099912650971L;
-	/**
-	 * The default theme used for all users.
-	 */
-	private static final String DEFAULT_THEME = "glass-x";
-	/**
-	 * The key to identify the theme in the cookie.
-	 */
-	private static final String KEY_COOKIE_THEME = "theme";
-	/**
-	 * The key to identify the theme in the properties.
-	 */
-	private static final String KEY_THEME = "theme";
-	/**
-	 * The current theme for this session.
-	 */
-	private String theme;
-
-	/**
-	 * Default constructor. <b>Do not use this constructor. This bean is JSF managed.</b>
-	 */
-	public CurrentThemeBean() {
-		this.setDefaultTheme();
-		this.searchThemeInCookies();
-	}
-
-	/**
-	 * This method sets the current theme of the user to the default theme. This beans that the bean tries to find the name of the theme within the parameters for
-	 * primefaces. If this fail, the default theme will be used.
-	 */
-	private void setDefaultTheme() {
-		// Get the parameters within the current context.
-		final Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); // NOPMD (No concurrent access)
-		// Try to find the default theme within the parameters.
-		if (params.containsKey(CurrentThemeBean.KEY_THEME)) {
-			this.theme = params.get(CurrentThemeBean.KEY_THEME);
-		} else {
-			// Use the default theme.
-			this.theme = CurrentThemeBean.DEFAULT_THEME;
-		}
-	}
-
-	/**
-	 * This method tries to search the theme within the cookies of the user.
-	 */
-	private void searchThemeInCookies() {
-		// Try to find the cookie for the theme.
-		final Map<String, Object> cookies = FacesContext.getCurrentInstance().getExternalContext().getRequestCookieMap(); // NOPMD (No concurrent access)
-		if (cookies.containsKey(CurrentThemeBean.KEY_COOKIE_THEME)) {
-			this.theme = ((Cookie) cookies.get(CurrentThemeBean.KEY_COOKIE_THEME)).getValue();
-		}
-	}
-
-	/**
-	 * Delivers the current theme.
-	 * 
-	 * @return The currently used theme.
-	 */
-	public String getTheme() {
-		synchronized (this) {
-			return this.theme;
-		}
-	}
-
-	/**
-	 * Sets the value of this bean. This beans that the stored theme will be set to the new value and that the method will try to store the name of this theme within
-	 * the cookies of the user.
-	 * 
-	 * @param theme
-	 *            The new theme to be stored within this instance.
-	 */
-	public void setTheme(final String theme) {
-		synchronized (this) {
-			this.theme = theme;
-
-			// Set the theme cookie.
-			final Cookie cookie = new Cookie(CurrentThemeBean.KEY_COOKIE_THEME, theme);
-			// Try to save it for a year (maximum age)
-			cookie.setMaxAge(60 * 60 * 24 * 365);
-
-			// Deliver the cookie
-			final HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
-			response.addCookie(cookie);
-		}
-	}
-}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/UserBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/UserBean.java
index c495313ceb4721caf23fb80e7c5ef57efed0fda7..0e3df0b7271a3e94b81b11d22bea0bcc265d06eb 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/UserBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/UserBean.java
@@ -38,6 +38,7 @@ public final class UserBean {
 	private static final String WELCOME_MSG_TEMPLATE = "growlComp.renderMessage({summary : '%s', detail : '%s', severity: 'info'});";
 
 	private String userName;
+
 	@ManagedProperty(value = "#{globalPropertiesBean}")
 	private GlobalPropertiesBean globalPropertiesBean;
 
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorBean.java
index 39ae58cfc2fafd04f5ddbe53663beaa56266a651..decd02f1e946fd4f752ceea4a0b957cf0d390701 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorBean.java
@@ -31,6 +31,7 @@ import javax.faces.bean.ManagedBean;
 import javax.faces.bean.ManagedProperty;
 import javax.faces.bean.ViewScoped;
 import javax.faces.context.FacesContext;
+import javax.faces.event.ValueChangeEvent;
 
 import kieker.analysis.model.analysisMetaModel.MIAnalysisMetaModelFactory;
 import kieker.analysis.model.analysisMetaModel.MIDependency;
@@ -53,6 +54,7 @@ import kieker.analysis.repository.AbstractRepository;
 import kieker.common.logging.Log;
 import kieker.common.logging.LogFactory;
 import kieker.webgui.beans.application.ProjectsBean;
+import kieker.webgui.beans.session.CurrentConfigurationBean;
 import kieker.webgui.common.ClassAndMethodContainer;
 import kieker.webgui.common.IProjectManagerFacade;
 import kieker.webgui.common.ProjectManagerFacade;
@@ -144,6 +146,9 @@ public final class CurrentAnalysisEditorBean {
 	@ManagedProperty(value = "#{currentAnalysisEditorGraphBean}")
 	private CurrentAnalysisEditorGraphBean currentAnalysisEditorGraphBean;
 
+	@ManagedProperty(value = "#{currentConfigurationBean}")
+	private CurrentConfigurationBean currentConfigurationBean;
+
 	/**
 	 * Creates a new instance of this class. <b>Do not call this constructor manually. It will only be accessed by JSF.</b>
 	 */
@@ -450,6 +455,13 @@ public final class CurrentAnalysisEditorBean {
 		}
 	}
 
+	/**
+	 * Delivers the content of the dependencies-field of the given component (plugin or repository).
+	 * 
+	 * @param clazz
+	 *            The class whose dependencies should be extracted.
+	 * @return The dependencies for the class or a substitute if none is available. This is in either case human readable.
+	 */
 	public String getDependencies(final Class<?> clazz) {
 		// Get the two potential annotations
 		final Annotation annotationPlugin = clazz.getAnnotation(this.classAndMethodContainer.getPluginAnnotationClass());
@@ -459,8 +471,8 @@ public final class CurrentAnalysisEditorBean {
 		final Method repoDepMethod = this.classAndMethodContainer.getRepositoryDependenciesMethod();
 
 		// Now check which one of them is available
-		if ((annotationPlugin == null)) {
-			if ((annotationRepository == null)) {
+		if (annotationPlugin == null) {
+			if (annotationRepository == null) {
 				// None. Deliver a human readable substitute.
 				return "No dependency information available";
 			} else {
@@ -1003,6 +1015,45 @@ public final class CurrentAnalysisEditorBean {
 		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, "", msg));
 	}
 
+	/**
+	 * The getter for the property {@link CurrentAnalysisEditorBean#currentConfigurationBean}.
+	 * 
+	 * @return The current value of the property.
+	 */
+	public CurrentConfigurationBean getCurrentConfigurationBean() {
+		return this.currentConfigurationBean;
+	}
+
+	/**
+	 * The setter for the property {@link CurrentAnalysisEditorBean#currentConfigurationBean}.
+	 * 
+	 * @param currentConfigurationBean
+	 *            The new value of the property.
+	 */
+	public void setCurrentConfigurationBean(final CurrentConfigurationBean currentConfigurationBean) {
+		this.currentConfigurationBean = currentConfigurationBean;
+	}
+
+	/**
+	 * This method should be called if the grid color has been modified.
+	 * 
+	 * @param event
+	 *            The change event.
+	 */
+	public void gridColorListener(final ValueChangeEvent event) {
+		this.currentAnalysisEditorGraphBean.setGridColor((String) event.getNewValue());
+	}
+
+	/**
+	 * This method should be called if the grid size has been modified.
+	 * 
+	 * @param event
+	 *            The change event.
+	 */
+	public void gridSizeListener(final ValueChangeEvent event) {
+		this.currentAnalysisEditorGraphBean.setGridSize((Integer) event.getNewValue());
+	}
+
 	/**
 	 * This method initializes the modified jit-graph by delivering the necessary javascript commands to the client. It prints all current existing plugins,
 	 * repositories and their connections. All further components will be added mostly by other methods.
@@ -1049,6 +1100,10 @@ public final class CurrentAnalysisEditorBean {
 		this.currentAnalysisEditorGraphBean.initListeners();
 		this.currentAnalysisEditorGraphBean.addEdgeConstraints();
 
+		// Now we have to set the default grid size and color of the user
+		this.currentAnalysisEditorGraphBean.setGridColor(this.currentConfigurationBean.getGridColor());
+		this.currentAnalysisEditorGraphBean.setGridSize(this.currentConfigurationBean.getGridSize());
+
 		// Repaint the graph
 		this.currentAnalysisEditorGraphBean.refreshGraph();
 	}
@@ -1157,4 +1212,5 @@ public final class CurrentAnalysisEditorBean {
 	public void edgeRemoved(final MIRepositoryConnector sourcePort, final MIRepository target) {
 		sourcePort.setRepository(null);
 	}
+
 }
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorGraphBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorGraphBean.java
index 723c8751d2e53ef9469aa01f9aa1d29b215b3a31..5a8dd7326bbe479003de952dd0b5697c114212df 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorGraphBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorGraphBean.java
@@ -50,7 +50,7 @@ import org.eclipse.emf.ecore.EObject;
  */
 @ManagedBean
 @ViewScoped
-public class CurrentAnalysisEditorGraphBean {
+public final class CurrentAnalysisEditorGraphBean {
 	/**
 	 * This is the log for errors, exceptions etc.
 	 */
@@ -115,16 +115,41 @@ public class CurrentAnalysisEditorGraphBean {
 	 * This is the javascript code to rename a node within the graph.
 	 */
 	private static final String JS_CMD_RENAME_NODE = "graph.getNode(%s).name = '%s';";
-	private static final Object REPOSITORY_INPUT_PORT = "R";
-
+	/**
+	 * This is the javascript code to enable the grid within the graph.
+	 */
 	private static final String JS_CMD_ENABLE_GRID = "graph.setGridVisible(true);";
+	/**
+	 * This is the javascript code to disable the grid within the graph.
+	 */
 	private static final String JS_CMD_DISABLE_GRID = "graph.setGridVisible(false);";
+	/**
+	 * This is the javascript code to enable the grid snap within the graph.
+	 */
 	private static final String JS_CMD_ENABLE_SNAP = "graph.setGridSnap(true);";
+	/**
+	 * This is the javascript code to disable the grid snap within the graph.
+	 */
 	private static final String JS_CMD_DISABLE_SNAP = "graph.setGridSnap(false);";
+	/**
+	 * This is the javascript code to use the scale-to-fit-function.
+	 */
 	private static final String JS_CMD_SCALE_TO_FIT = "graph.scaleToFit();";
+	/**
+	 * This is the javascript code the set the color of the grid.
+	 */
+	private static final String JS_CMD_SET_GRID_COLOR = "graph.setGridColor('%s');";
+	/**
+	 * This is the javascript code the set the size of the grid.
+	 */
+	private static final String JS_CMD_SET_GRID_SIZE = "graph.setGridSize(%d);";
+	/**
+	 * This is the name of the (only) input port of every repository.
+	 */
+	private static final Object REPOSITORY_INPUT_PORT = "R";
 
-	private boolean gridEnabled = false;
-	private boolean snapEnabled = false;
+	private boolean gridEnabled = false; // NOPMD (The field IS accessed later)
+	private boolean snapEnabled = false; // NOPMD (The field IS accessed later)
 
 	/**
 	 * This map contains all components (plugins, repositories and ports) within the graph to identify them with a unique ID.
@@ -492,6 +517,30 @@ public class CurrentAnalysisEditorGraphBean {
 		}
 	}
 
+	/**
+	 * This method sets the color of the grid within the graph.
+	 * 
+	 * @param color
+	 *            The new color as a HTML color (FF0080 e.g.).
+	 */
+	public void setGridColor(final String color) {
+		final String cmd = String.format(CurrentAnalysisEditorGraphBean.JS_CMD_SET_GRID_COLOR, "#" + color);
+		RequestContext.getCurrentInstance().execute(cmd);
+		this.refreshGraph();
+	}
+
+	/**
+	 * This method sets the size of the grid within the graph.
+	 * 
+	 * @param size
+	 *            The new grid size.
+	 */
+	public void setGridSize(final int size) {
+		final String cmd = String.format(CurrentAnalysisEditorGraphBean.JS_CMD_SET_GRID_SIZE, size);
+		RequestContext.getCurrentInstance().execute(cmd);
+		this.refreshGraph();
+	}
+
 	/**
 	 * This method scales the graph to fit the current view. After this method-call, all components of the graph should be visible.
 	 */
@@ -499,6 +548,9 @@ public class CurrentAnalysisEditorGraphBean {
 		RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_SCALE_TO_FIT);
 	}
 
+	/**
+	 * This method switches the visibility of the grid within the graph.
+	 */
 	public void switchGrid() {
 		if (this.gridEnabled) {
 			RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_DISABLE_GRID);
@@ -506,11 +558,13 @@ public class CurrentAnalysisEditorGraphBean {
 			RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_ENABLE_GRID);
 		}
 
-		this.gridEnabled = !this.gridEnabled;
-
+		this.gridEnabled ^= true; // this.gridEnabled = !this.gridEnabled;
 		this.refreshGraph();
 	}
 
+	/**
+	 * This method switches the grid snap within the graph.
+	 */
 	public void switchSnap() {
 		if (this.snapEnabled) {
 			RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_DISABLE_SNAP);
@@ -518,13 +572,23 @@ public class CurrentAnalysisEditorGraphBean {
 			RequestContext.getCurrentInstance().execute(CurrentAnalysisEditorGraphBean.JS_CMD_ENABLE_SNAP);
 		}
 
-		this.snapEnabled = !this.snapEnabled;
+		this.snapEnabled ^= true; // this.snapEnabled = !this.snapEnabled;
 	}
 
+	/**
+	 * Getter for the property {@link CurrentAnalysisEditorGraphBean#gridEnabled}.
+	 * 
+	 * @return The current value of the property.
+	 */
 	public boolean isGridEnabled() {
 		return this.gridEnabled;
 	}
 
+	/**
+	 * Getter for the property {@link CurrentAnalysisEditorGraphBean#snapEnabled}.
+	 * 
+	 * @return The current value of the property.
+	 */
 	public boolean isSnapEnabled() {
 		return this.snapEnabled;
 	}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentCockpitBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentCockpitBean.java
index 0514eb98f2718d7af8e79e854b2da733c2cb7bd7..7ec0410abe451f02a0caca28e919b43662b18b27 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentCockpitBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentCockpitBean.java
@@ -47,7 +47,7 @@ import kieker.webgui.common.exception.ProjectNotExistingException;
  */
 @ManagedBean
 @ViewScoped
-public class CurrentCockpitBean {
+public final class CurrentCockpitBean {
 
 	private static final Log LOG = LogFactory.getLog(CurrentCockpitBean.class);
 
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentCockpitEditorBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentCockpitEditorBean.java
index 53408e7f6b75eab05c4981b4b14331e4cd2a4a9c..c680b71e8ddb387e4abb41205de501d56a2bca7f 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentCockpitEditorBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentCockpitEditorBean.java
@@ -63,7 +63,7 @@ import org.primefaces.event.TabChangeEvent;
  */
 @ManagedBean
 @ViewScoped
-public class CurrentCockpitEditorBean {
+public final class CurrentCockpitEditorBean {
 	/**
 	 * This is the log for errors, exceptions etc.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentControllerBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentControllerBean.java
index de47d9bb8a78c3a40ebbced7ad3a22d502c88d07..a49b12e09e5b332fadc95785f2d86472f1592cb2 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentControllerBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentControllerBean.java
@@ -23,6 +23,7 @@ import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
+import java.util.List;
 
 import javax.faces.bean.ManagedBean;
 import javax.faces.bean.ManagedProperty;
@@ -48,11 +49,12 @@ import kieker.webgui.common.exception.ProjectNotExistingException;
  */
 @ManagedBean
 @ViewScoped
-public class CurrentControllerBean {
+public final class CurrentControllerBean {
 
 	private static final Log LOG = LogFactory.getLog(CurrentControllerBean.class);
+
 	private final IProjectManagerFacade projectManagerFacade = ProjectManagerFacade.getInstance();
-	private final ArrayList<String> logEntries = new ArrayList<String>();
+	private final List<String> logEntries = new ArrayList<String>();
 	private String projectName;
 	@ManagedProperty(value = "#{projectsBean}")
 	private ProjectsBean projectsBean;
@@ -285,10 +287,21 @@ public class CurrentControllerBean {
 		}
 	}
 
+	/**
+	 * Delivers the available log entries.
+	 * 
+	 * @return The current log entries.
+	 */
 	public Collection<String> getLog() {
 		return this.logEntries;
 	}
 
+	/**
+	 * Adds the element to the log.
+	 * 
+	 * @param cause
+	 *            The element to be added.
+	 */
 	private void addLogEntry(final Throwable cause) {
 		final Writer result = new StringWriter();
 		final PrintWriter printWriter = new PrintWriter(result);
@@ -296,6 +309,12 @@ public class CurrentControllerBean {
 		this.addLogEntry(result.toString());
 	}
 
+	/**
+	 * Adds the element (with the current time) to the log.
+	 * 
+	 * @param msg
+	 *            The log message.
+	 */
 	private void addLogEntry(final String msg) {
 		final String finalMsg = new Date().toString() + " : " + msg;
 		synchronized (this) {
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentProjectOverviewBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentProjectOverviewBean.java
index c3ea9192cc7cda3d8e1dfa746c2a1c256233f4bf..50865909c2cb99d7b9f92d42c85d8eb63ca2e62a 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentProjectOverviewBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentProjectOverviewBean.java
@@ -39,7 +39,7 @@ import org.primefaces.event.SelectEvent;
  */
 @ManagedBean
 @ViewScoped
-public class CurrentProjectOverviewBean {
+public final class CurrentProjectOverviewBean {
 
 	/**
 	 * This list contains all available projects by name.
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/ClassAndMethodContainer.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/ClassAndMethodContainer.java
index 4dc805101e46ad54504b7d60092c6b7eb336d16f..cf785bfcead05e14e617ca4bb5ad132c7d5d5804 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/ClassAndMethodContainer.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/ClassAndMethodContainer.java
@@ -672,8 +672,13 @@ public final class ClassAndMethodContainer {
 		return this.analysisControllerLoadFromFile;
 	}
 
+	/**
+	 * The getter-method for the field {@link ClassAndMethodContainer#pluginDependenciesMethod}.
+	 * 
+	 * @return The value of the field.
+	 */
 	public Method getPluginDependenciesMethod() {
-		return pluginDependenciesMethod;
+		return this.pluginDependenciesMethod;
 	}
 
 	/**
@@ -685,8 +690,13 @@ public final class ClassAndMethodContainer {
 		return this.displayDescriptionMethod;
 	}
 
+	/**
+	 * The getter-method for the field {@link ClassAndMethodContainer#repositoryDependenciesMethod}.
+	 * 
+	 * @return The value of the field.
+	 */
 	public Method getRepositoryDependenciesMethod() {
-		return repositoryDependenciesMethod;
+		return this.repositoryDependenciesMethod;
 	}
 
 	/**
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/IProjectManagerFacade.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/IProjectManagerFacade.java
index b5e87ed1898dbd9e34200a6b8af3f0abf87723ef..99b7d621a9944b4042524efcdb316b206ce11c14 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/IProjectManagerFacade.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/IProjectManagerFacade.java
@@ -265,6 +265,8 @@ public interface IProjectManagerFacade {
 	 *             If a project with the given name does not exist.
 	 * @throws AnalysisStateException
 	 *             If the analysis of the given project is in the wrong state to be initialized. This means that it has not been cleaned yet.
+	 * @throws AnalysisInitializationException
+	 *             If an error occurred during the initialization of the analysis.
 	 */
 	public void initializeAnalysis(final String projectName, final ClassLoader classLoader) throws ProjectNotExistingException, AnalysisStateException,
 			AnalysisInitializationException;
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisInitializationException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisInitializationException.java
index 636375f7f7819701879e92a31c118902d5e3cca9..c856fb2e977e9c1b47803ca3d682a04161d7d2d0 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisInitializationException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisInitializationException.java
@@ -22,7 +22,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class AnalysisInitializationException extends AbstractKiekerWebGUIException {
+public final class AnalysisInitializationException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisStateException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisStateException.java
index 2fbe7e264245d4d75a4dccbc2e9e57ad1358afbb..e16168dbef438a7a092c5bdf5bb809c545e74135 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisStateException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/AnalysisStateException.java
@@ -22,7 +22,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class AnalysisStateException extends AbstractKiekerWebGUIException {
+public final class AnalysisStateException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/DisplayNotFoundException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/DisplayNotFoundException.java
index 9f076c75628582a15a0c54f9a02a81174f730b55..0245fade2e38125b81867bb4b50dd70bafe56a57 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/DisplayNotFoundException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/DisplayNotFoundException.java
@@ -22,7 +22,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class DisplayNotFoundException extends AbstractKiekerWebGUIException {
+public final class DisplayNotFoundException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/LibraryAlreadyExistingException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/LibraryAlreadyExistingException.java
index 9cdbdfd19e483fe1fa7eab37bf70858c11140785..f8df52c547928cff93141342ca69953cb929d2e7 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/LibraryAlreadyExistingException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/LibraryAlreadyExistingException.java
@@ -22,7 +22,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class LibraryAlreadyExistingException extends AbstractKiekerWebGUIException {
+public final class LibraryAlreadyExistingException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/LibraryLoadException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/LibraryLoadException.java
index ab94e92e3d0e0e709616e2dac82fb755a9c54268..b0ce67b58a586179a963e528d07162f491966888 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/LibraryLoadException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/LibraryLoadException.java
@@ -22,7 +22,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class LibraryLoadException extends AbstractKiekerWebGUIException {
+public final class LibraryLoadException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/NewerProjectException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/NewerProjectException.java
index 69753ca80e6fcc37bea7bc2c28551416fc61afa4..f00af8143a8c18f773a5a9e95ee3f7846b8cc50e 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/NewerProjectException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/NewerProjectException.java
@@ -23,7 +23,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class NewerProjectException extends AbstractKiekerWebGUIException {
+public final class NewerProjectException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectAlreadyExistingException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectAlreadyExistingException.java
index 927b66ea79cd88aff9a3f0e7a6e57df0c4ab22cf..38ee03195bf3834d16f30c694f5da2829c5b7169 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectAlreadyExistingException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectAlreadyExistingException.java
@@ -22,7 +22,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class ProjectAlreadyExistingException extends AbstractKiekerWebGUIException {
+public final class ProjectAlreadyExistingException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectLoadException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectLoadException.java
index f2939160fd71df56136141a683ca921a5ee58683..fb596d09d6c08f4f96cfd0f9a95a12432d920626 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectLoadException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectLoadException.java
@@ -21,7 +21,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class ProjectLoadException extends AbstractKiekerWebGUIException {
+public final class ProjectLoadException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectNotExistingException.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectNotExistingException.java
index a44500cccd77355a6081a7a369a69adb866c8de5..613edfba0a243226b1fe82403cfbd0d7d5f4a5b0 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectNotExistingException.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/exception/ProjectNotExistingException.java
@@ -22,7 +22,7 @@ package kieker.webgui.common.exception;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class ProjectNotExistingException extends AbstractKiekerWebGUIException {
+public final class ProjectNotExistingException extends AbstractKiekerWebGUIException {
 	/**
 	 * The UID.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/ACManager.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/ACManager.java
index be0f340923be42a4c484c731053eb5837ffe968a..adca14b7473bab85166e00e33978e6cb3801668a 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/ACManager.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/ACManager.java
@@ -58,6 +58,8 @@ public final class ACManager {
 	 *            The class loader to be used during the loading.
 	 * @throws ProjectNotExistingException
 	 *             If a project with the given name does not exist.
+	 * @throws AnalysisInitializationException
+	 *             If an error occurred during the initialization of the analysis.
 	 * @throws AnalysisStateException
 	 *             If the analysis is in an invalid state to be initialized.
 	 */
@@ -77,8 +79,6 @@ public final class ACManager {
 	 * 
 	 * @param projectName
 	 *            The name of the project to be cleaned.
-	 * @throws ProjectNotExistingException
-	 *             If a project with the given name does not exist.
 	 * @throws AnalysisStateException
 	 *             If the analysis is in an invalid state to be cleaned.
 	 */
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/Analysis.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/Analysis.java
index 9911a383ad56f645644b4468959dcdb2bb11d70f..37a97b1d442f196c67a35b58a8a22555f815558d 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/Analysis.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/Analysis.java
@@ -37,7 +37,7 @@ import kieker.webgui.common.exception.ProjectLoadException;
  * @author Nils Christian Ehmke
  * @version 1.0
  */
-public class Analysis {
+public final class Analysis {
 	private static final Log LOG = LogFactory.getLog(Analysis.class);
 	private static final long MAX_THREAD_WAIT_TIME_MS = 1000;
 	private final ClassAndMethodContainer classAndMethodContainer;
@@ -54,6 +54,8 @@ public class Analysis {
 	 *            The file to be loaded.
 	 * @throws AnalysisStateException
 	 *             If something went wrong during the loading of the analysis.
+	 * @throws AnalysisInitializationException
+	 *             If an error occurred during the instantiation of the analysis.
 	 */
 	public Analysis(final ClassLoader classLoader, final File projectFile) throws AnalysisStateException, AnalysisInitializationException {
 		try {
@@ -67,10 +69,10 @@ public class Analysis {
 					controllerAndMapping, null);
 			this.analysisControllerThread = ClassAndMethodContainer.invokeConstructor(this.classAndMethodContainer.getAnalysisControllerThreadConstructor(),
 					this.analysisController);
-			this.updateDisplaysThread = new UpdateDisplaysThread();// ClassAndMethodContainer.invokeMethod(
+			this.updateDisplaysThread = new UpdateDisplaysThread(); // ClassAndMethodContainer.invokeMethod(
 			// this.classAndMethodContainer.getAnalysisControllerWithMappingGetMapping(), controllerAndMapping, null));
 			if ((this.analysisController == null) || (this.analysisControllerThread == null)) {
-				throw new AnalysisStateException("An error occured while instantiating the analysis.");
+				throw new AnalysisInitializationException("An error occured while instantiating the analysis.");
 			}
 		} catch (final ProjectLoadException ex) {
 			throw new AnalysisInitializationException("An error occured while instantiating the analysis.", ex);
@@ -167,12 +169,18 @@ public class Analysis {
 		// private final Map<Object, Method> methodMap = new ConcurrentHashMap<Object, Method>(); // NOPMD (Use of concurrent hash map)
 		private volatile boolean terminated = false;
 
+		/**
+		 * Default constructor.
+		 */
 		public UpdateDisplaysThread() {
 			// this.pluginMap = object;
 		}
 
+		/**
+		 * This method initializes the class. <b>Do not call this method. The method is managed by the class loader.</b>
+		 */
 		@PostConstruct
-		private void initialize() {
+		protected void initialize() {
 			// Initialize the hashmaps and the necessary objects
 			// for (final MIView view : Analysis.this.modelProject.getViews()) {
 			// final Map<String, Object> viewMap = new ConcurrentHashMap<String, Object>(); // NOPMD (Use of concurrent hash map)
@@ -293,6 +301,9 @@ public class Analysis {
 
 		}
 
+		/**
+		 * This method makes sure that the thread terminates at the next possible point.
+		 */
 		public void terminate() {
 			this.terminated = true;
 		}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/FSManager.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/FSManager.java
index 30391a4e5788355294d5dd2e55f7aa140596f5be..706b173aa215b1bb5828e1e2e96196fef50ede0a 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/FSManager.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/FSManager.java
@@ -104,6 +104,9 @@ public final class FSManager {
 		// No code necessary
 	}
 
+	/**
+	 * This method initializes the class. <b>Do not call this method. The method is managed by the class loader.</b>
+	 */
 	@PostConstruct
 	protected void initialize() {
 		// Check for our root-directory and create it if necessary
@@ -354,6 +357,8 @@ public final class FSManager {
 	 *             If a project with the given name does not exist.
 	 * @throws IOException
 	 *             If something went wrong during the uploading.
+	 * @throws LibraryAlreadyExistingException
+	 *             If a library with the same name exists already.
 	 */
 	public void uploadLibrary(final UploadedFile file, final String projectName) throws ProjectNotExistingException, IOException, LibraryAlreadyExistingException {
 		// Check whether the project exists
@@ -583,7 +588,7 @@ public final class FSManager {
 	/**
 	 * Checks whether a project with the name exists on the file system.
 	 * 
-	 * @param project
+	 * @param projectName
 	 *            The name of the project.
 	 * @return true if and only if a directory with the name of the project exists in the root dir.
 	 */
@@ -608,22 +613,55 @@ public final class FSManager {
 		return file.toURL();
 	}
 
+	/**
+	 * Assembles the {@link File}-element pointing to the directory of the given project.
+	 * 
+	 * @param projectName
+	 *            The name of the project.
+	 * @return The directory of the project.
+	 */
 	private File assembleProjectDir(final String projectName) {
 		return new File(FSManager.ROOT_DIRECTORY + File.separator + projectName);
 	}
 
+	/**
+	 * Assembles the {@link File}-element pointing to the kax-file of the given project.
+	 * 
+	 * @param projectName
+	 *            The name of the project.
+	 * @return The kax-file of the project.
+	 */
 	private File assembleKaxFile(final String projectName) {
 		return new File(FSManager.ROOT_DIRECTORY + File.separator + projectName + File.separator + projectName + "." + FSManager.KAX_EXTENSION);
 	}
 
+	/**
+	 * Assembles the {@link File}-element pointing to the library directory of the given project.
+	 * 
+	 * @param projectName
+	 *            The name of the project.
+	 * @return The library directory of the project.
+	 */
 	private File assembleLibDir(final String projectName) {
 		return new File(FSManager.ROOT_DIRECTORY + File.separator + projectName + File.separator + FSManager.LIB_DIRECTORY);
 	}
 
+	/**
+	 * Delivers the {@link URL}-element pointing to the kieker library.
+	 * 
+	 * @return The kieker library.
+	 */
 	public URL getKiekerURL() {
 		return Thread.currentThread().getContextClassLoader().getResource(FSManager.KIEKER_LIB);
 	}
 
+	/**
+	 * Delivers the kax-file for the given project.
+	 * 
+	 * @param projectName
+	 *            The name of the project.
+	 * @return The kax-file of the project.
+	 */
 	public File getProjectFile(final String projectName) {
 		return this.assembleKaxFile(projectName);
 	}
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/PluginFinder.java b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/PluginFinder.java
index 9ed0f55b30a5d60f176f52a7645c21932167a30a..44f4d7e24affa0c0fedb99eea25ea7d560f38969 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/PluginFinder.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/common/util/PluginFinder.java
@@ -48,6 +48,10 @@ public final class PluginFinder {
 	 * 
 	 * @param url
 	 *            The url for the jar.
+	 * @param classLoader
+	 *            The classloader which should be used to load the classes.
+	 * @param classAndMethodContainer
+	 *            The container for the necessary reflection methods.
 	 * @return A list containing all available repository-classes or null, if an exception occurred.
 	 */
 	public List<Class<AbstractRepository>> getAllRepositoriesWithinJar(final URL url, final ClassLoader classLoader,
@@ -78,7 +82,9 @@ public final class PluginFinder {
 	 * @param url
 	 *            The url for the jar.
 	 * @param classLoader
-	 *            The class loader used to load the classes.
+	 *            The classloader which should be used to load the classes.
+	 * @param classAndMethodContainer
+	 *            The container for the necessary reflection methods.
 	 * @return A list containing all available plugin-classes or null, if an exception occurred.
 	 */
 	public List<Class<AbstractPlugin>> getAllPluginsWithinJar(final URL url, final ClassLoader classLoader,
@@ -106,7 +112,7 @@ public final class PluginFinder {
 	 * @param url
 	 *            The url for the jar.
 	 * @param classLoader
-	 *            The class loader used to load the classes.
+	 *            The classloader which should be used to load the classes.
 	 * @return A list containing all available classes or null, if an exception occurred.
 	 */
 	private List<Class<?>> getAllClassesWithinJar(final URL url, final ClassLoader classLoader) {
diff --git a/Kieker.WebGUI/src/main/resources/global.properties b/Kieker.WebGUI/src/main/resources/global.properties
index a51a7c0bd0c3931e8dd927a89e973bd31b380036..7a0c847e82bda7cd6eba714b66e4d638973ca8d0 100644
--- a/Kieker.WebGUI/src/main/resources/global.properties
+++ b/Kieker.WebGUI/src/main/resources/global.properties
@@ -9,13 +9,19 @@ kieker.webgui.common.welcomeMessage = This is an early alpha version of the Kiek
 
 #------------------------------------------------------------------------------
 #
-# These constants concern mostly the theme containing bean(s)
+# These constants concern the further (and more specific) configuration of the
+# current user
 #
 #------------------------------------------------------------------------------
 
-kieker.webgui.theme.defaultTheme = glass-x
-kieker.webgui.theme.cookieName = theme
-kieker.webgui.theme.facesContextKey = theme
+kieker.webgui.config.lookAndFeel.cookieName = lookAndFeel
+kieker.webgui.config.lookAndFeel.defaultTheme = glass-x
+kieker.webgui.config.lookAndFeel.facesContextKey = theme
+
+kieker.webgui.config.analysisEditor.gridSize.cookieName = analysisEditor.gridSize
+kieker.webgui.config.analysisEditor.gridColor.cookieName = analysisEditor.gridColor
+kieker.webgui.config.analysisEditor.defaultGridSize = 50
+kieker.webgui.config.analysisEditor.defaultGridColor = 0080FF
 
 #------------------------------------------------------------------------------
 #
diff --git a/Kieker.WebGUI/src/main/resources/kieker-1.6-SNAPSHOT_emf.jar b/Kieker.WebGUI/src/main/resources/kieker-1.6-SNAPSHOT_emf.jar
index 3e3f56ed47646c6fe7c628362c8def97ee54533e..4f2a182d6a0105730fc16fd92b1d5b3e3ae9db1d 100644
Binary files a/Kieker.WebGUI/src/main/resources/kieker-1.6-SNAPSHOT_emf.jar and b/Kieker.WebGUI/src/main/resources/kieker-1.6-SNAPSHOT_emf.jar differ
diff --git a/Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml b/Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml
index 3f5fc4d3f7aab13ba73840d2e4a8169d6df290bd..57f2cbabaf907bbdbb2fe5338cc094f10d46ee6d 100644
--- a/Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml
+++ b/Kieker.WebGUI/src/main/webapp/WEB-INF/web.xml
@@ -1,16 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
     
+    <!-- This parameter determines that the state is saved on the server. -->
     <context-param>
         <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
         <param-value>server</param-value>
     </context-param>
+    
+    <!-- This parameter determines the current stage of the project. -->
     <context-param>
         <param-name>javax.faces.PROJECT_STAGE</param-name>
         <param-value>Development</param-value>
     </context-param>
 
-    <!-- This filter is necessary for the PrimeFaces file upload in order to work. -->
+    <!-- This parameter makes sure that the theme chooser will work. -->
+    <context-param>
+        <param-name>primefaces.THEME</param-name>
+        <param-value>#{currentConfigurationBean.lookAndFeel}</param-value>
+    </context-param>
+    
+    <!-- This filter is necessary for the PrimeFaces file upload. -->
     <filter>
         <filter-name>PrimeFaces FileUpload Filter</filter-name>
         <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
@@ -25,12 +34,6 @@
         <url-pattern>/*</url-pattern>
     </filter-mapping>
     
-    <!-- This here makes sure that the theme chooser of PrimeFaces will work. -->
-    <context-param>
-        <param-name>primefaces.THEME</param-name>
-        <param-value>#{currentThemeBean.theme}</param-value>
-    </context-param>
-    
     <servlet>
         <servlet-name>Faces Servlet</servlet-name>
         <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
@@ -56,7 +59,7 @@
         <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
     </listener>
     
-    <!-- This filter will be used by Pretty Filter in order to use better looking URLs. -->
+    <!-- This filter will be used by Pretty Filter.-->
     <filter>
         <filter-name>Pretty Filter</filter-name>
         <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/settingsDialog.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/settingsDialog.xhtml
index d4e468f4ab29223f906284049643029f8fcf16b1..ee5efc2bf0599d7c02dafac7dae49befe21d3cbd 100644
--- a/Kieker.WebGUI/src/main/webapp/dialogs/settingsDialog.xhtml
+++ b/Kieker.WebGUI/src/main/webapp/dialogs/settingsDialog.xhtml
@@ -12,7 +12,7 @@
                 <p:tab title="Common">
                     <h:panelGrid columns="2" cellpadding="10">
                         <h:outputText value="Look and Feel:" />
-                        <p:themeSwitcher value="#{currentThemeBean.theme}"
+                        <p:themeSwitcher value="#{currentConfigurationBean.lookAndFeel}"
                                          style="width:150px" effect="fade">
                             <f:selectItem itemLabel="Choose Theme" itemValue="" />
                             <f:selectItems value="#{themeSwitcherBean.themes}" />
@@ -32,10 +32,10 @@
                         </p:selectOneMenu>
 
                         <h:outputText value="Grid-Size:"/>
-                        <p:spinner style="width:150px"/>
+                        <p:spinner value="#{currentConfigurationBean.gridSize}" valueChangeListener="#{currentAnalysisEditorBean.gridSizeListener}" suffix=" [px]"/>
 
                         <h:outputText value="Grid-Color:"/>
-                        <p:colorPicker style="width:150px"/>
+                        <p:colorPicker value="#{currentConfigurationBean.gridColor}" valueChangeListener="#{currentAnalysisEditorBean.gridColorListener}"/>
                     </h:panelGrid>
                 </p:tab>
                 <p:tab title="Analysis Controller" disabled="true">