Index: trunk/JavaHelperLib/src/de/ugoe/cs/util/console/Console.java
===================================================================
--- trunk/JavaHelperLib/src/de/ugoe/cs/util/console/Console.java	(revision 198)
+++ trunk/JavaHelperLib/src/de/ugoe/cs/util/console/Console.java	(revision 199)
@@ -1,8 +1,13 @@
 package de.ugoe.cs.util.console;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
+import java.util.LinkedHashSet;
 
 import de.ugoe.cs.util.StringTools;
+import de.ugoe.cs.util.console.listener.ICommandListener;
+import de.ugoe.cs.util.console.listener.IErrorListener;
+import de.ugoe.cs.util.console.listener.IExceptionListener;
+import de.ugoe.cs.util.console.listener.IOutputListener;
+import de.ugoe.cs.util.console.listener.ITraceListener;
 
 /**
@@ -26,10 +31,9 @@
 public final class Console {
 
-	/**
-	 * <p>
-	 * List of observers.
-	 * </p>
-	 */
-	private List<ConsoleObserver> observers;
+	private Collection<IOutputListener> outputListener;
+	private Collection<IErrorListener> errorListener;
+	private Collection<ITraceListener> traceListener;
+	private Collection<ICommandListener> commandListener;
+	private Collection<IExceptionListener> exceptionListener;
 
 	/**
@@ -61,5 +65,9 @@
 	 */
 	private Console() {
-		observers = new ArrayList<ConsoleObserver>();
+		outputListener = new LinkedHashSet<IOutputListener>();
+		errorListener = new LinkedHashSet<IErrorListener>();
+		traceListener = new LinkedHashSet<ITraceListener>();
+		commandListener = new LinkedHashSet<ICommandListener>();
+		exceptionListener = new LinkedHashSet<IExceptionListener>();
 	}
 
@@ -69,9 +77,74 @@
 	 * </p>
 	 * 
+	 * @deprecated use registerXYZListener instead
 	 * @param observer
 	 *            observer to be added
 	 */
 	public void registerObserver(ConsoleObserver observer) {
-		observers.add(observer);
+		registerOutputListener(observer);
+		registerErrorListener(observer);
+		registerTraceListener(observer);
+		registerCommandListener(observer);
+		registerExceptionListener(observer);
+	}
+
+	/**
+	 * <p>
+	 * Registers an output listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is registered
+	 */
+	public void registerOutputListener(IOutputListener listener) {
+		outputListener.add(listener);
+	}
+
+	/**
+	 * <p>
+	 * Registers an error listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is registered
+	 */
+	public void registerErrorListener(IErrorListener listener) {
+		errorListener.add(listener);
+	}
+
+	/**
+	 * <p>
+	 * Registers a trace listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is registered
+	 */
+	public void registerTraceListener(ITraceListener listener) {
+		traceListener.add(listener);
+	}
+
+	/**
+	 * <p>
+	 * Registers a command listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is registered
+	 */
+	public void registerCommandListener(ICommandListener listener) {
+		commandListener.add(listener);
+	}
+
+	/**
+	 * <p>
+	 * Registers an exception listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is registered
+	 */
+	public void registerExceptionListener(IExceptionListener listener) {
+		exceptionListener.add(listener);
 	}
 
@@ -81,9 +154,74 @@
 	 * </p>
 	 * 
+	 * @deprecated use removeXYZListener instead
 	 * @param observer
 	 *            observer to be removed
 	 */
 	public void deleteObserver(ConsoleObserver observer) {
-		observers.remove(observer);
+		removeOutputListener(observer);
+		removeErrorListener(observer);
+		removeTraceListener(observer);
+		removeCommandListener(observer);
+		removeExceptionListener(observer);
+	}
+
+	/**
+	 * <p>
+	 * Removes an output listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is removed
+	 */
+	public void removeOutputListener(IOutputListener listener) {
+		outputListener.remove(listener);
+	}
+
+	/**
+	 * <p>
+	 * Removes an error listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is removed
+	 */
+	public void removeErrorListener(IErrorListener listener) {
+		errorListener.remove(listener);
+	}
+
+	/**
+	 * <p>
+	 * Removes an trace listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is removed
+	 */
+	public void removeTraceListener(ITraceListener listener) {
+		traceListener.remove(listener);
+	}
+
+	/**
+	 * <p>
+	 * Removes a command listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is removed
+	 */
+	public void removeCommandListener(ICommandListener listener) {
+		commandListener.remove(listener);
+	}
+
+	/**
+	 * <p>
+	 * Removes an exception listener.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is removed
+	 */
+	public void removeExceptionListener(IExceptionListener listener) {
+		exceptionListener.remove(listener);
 	}
 
@@ -101,5 +239,5 @@
 			getInstance();
 		}
-		for (ConsoleObserver observer : theInstance.observers) {
+		for (IOutputListener observer : theInstance.outputListener) {
 			observer.updateText(msg);
 		}
@@ -119,5 +257,5 @@
 			getInstance();
 		}
-		for (ConsoleObserver observer : theInstance.observers) {
+		for (IOutputListener observer : theInstance.outputListener) {
 			observer.updateText(msg + StringTools.ENDLINE);
 		}
@@ -137,5 +275,5 @@
 			getInstance();
 		}
-		for (ConsoleObserver observer : theInstance.observers) {
+		for (IErrorListener observer : theInstance.errorListener) {
 			observer.errStream(errMsg);
 		}
@@ -155,5 +293,5 @@
 			getInstance();
 		}
-		for (ConsoleObserver observer : theInstance.observers) {
+		for (IErrorListener observer : theInstance.errorListener) {
 			observer.errStream(errMsg + StringTools.ENDLINE);
 		}
@@ -172,5 +310,5 @@
 			getInstance();
 		}
-		for (ConsoleObserver observer : theInstance.observers) {
+		for (IExceptionListener observer : theInstance.exceptionListener) {
 			observer.printStacktrace(e);
 		}
@@ -190,5 +328,5 @@
 			getInstance();
 		}
-		for (ConsoleObserver observer : theInstance.observers) {
+		for (ITraceListener observer : theInstance.traceListener) {
 			observer.trace(traceMsg);
 		}
@@ -209,5 +347,5 @@
 			getInstance();
 		}
-		for (ConsoleObserver observer : theInstance.observers) {
+		for (ITraceListener observer : theInstance.traceListener) {
 			observer.trace(traceMsg + StringTools.ENDLINE);
 		}
@@ -226,5 +364,5 @@
 			getInstance();
 		}
-		for (ConsoleObserver observer : theInstance.observers) {
+		for (ICommandListener observer : theInstance.commandListener) {
 			observer.commandNotification(command);
 		}
Index: trunk/JavaHelperLib/src/de/ugoe/cs/util/console/ConsoleObserver.java
===================================================================
--- trunk/JavaHelperLib/src/de/ugoe/cs/util/console/ConsoleObserver.java	(revision 198)
+++ trunk/JavaHelperLib/src/de/ugoe/cs/util/console/ConsoleObserver.java	(revision 199)
@@ -1,3 +1,9 @@
 package de.ugoe.cs.util.console;
+
+import de.ugoe.cs.util.console.listener.ICommandListener;
+import de.ugoe.cs.util.console.listener.IErrorListener;
+import de.ugoe.cs.util.console.listener.IExceptionListener;
+import de.ugoe.cs.util.console.listener.IOutputListener;
+import de.ugoe.cs.util.console.listener.ITraceListener;
 
 /**
@@ -7,58 +13,8 @@
  * 
  * @author Steffen Herbold
- * @version 1.0
+ * @version 2.0
+ * @deprecated Use listeners defined in the package de.ugoe.cs.console.listeners instead.
  */
-public interface ConsoleObserver {
-
-	/**
-	 * <p>
-	 * If a new message is send to the console, all observers are updated using
-	 * this method.
-	 * </p>
-	 * 
-	 * @param newMessage
-	 *            message that was send to the console.
-	 */
-	public void updateText(String newMessage);
-
-	/**
-	 * <p>
-	 * Send messages to the error stream of all observers.
-	 * </p>
-	 * 
-	 * @param errMessage
-	 *            error message
-	 */
-	public void errStream(String errMessage);
-
-	/**
-	 * <p>
-	 * Send messages to the trace stream of all observers.
-	 * </p>
-	 * 
-	 * @param traceMesssage
-	 *            error message
-	 */
-	public void trace(String traceMessage);
-
-	/**
-	 * <p>
-	 * Prints the stack trace of an exception.
-	 * </p>
-	 * 
-	 * @param e
-	 *            exception whose stack trace is to be printed
-	 */
-	public void printStacktrace(Exception e);
-
-	/**
-	 * <p>
-	 * Receives the command strings of all executed commands.
-	 * </p>
-	 * 
-	 * @param command
-	 *            string of the command.
-	 */
-	public void commandNotification(String command);
+public interface ConsoleObserver extends ITraceListener, IOutputListener, IErrorListener, ICommandListener, IExceptionListener {
 
 }
Index: trunk/JavaHelperLib/src/de/ugoe/cs/util/console/TextConsole.java
===================================================================
--- trunk/JavaHelperLib/src/de/ugoe/cs/util/console/TextConsole.java	(revision 198)
+++ trunk/JavaHelperLib/src/de/ugoe/cs/util/console/TextConsole.java	(revision 199)
@@ -2,4 +2,9 @@
 
 import java.io.IOException;
+
+import de.ugoe.cs.util.console.listener.IErrorListener;
+import de.ugoe.cs.util.console.listener.IExceptionListener;
+import de.ugoe.cs.util.console.listener.IOutputListener;
+import de.ugoe.cs.util.console.listener.ITraceListener;
 
 /**
@@ -12,5 +17,6 @@
  * @version 1.0
  */
-public class TextConsole implements ConsoleObserver {
+public class TextConsole implements IOutputListener, IErrorListener,
+		ITraceListener, IExceptionListener {
 
 	/**
@@ -27,5 +33,8 @@
 	 */
 	public TextConsole() {
-		Console.getInstance().registerObserver(this);
+		Console.getInstance().registerOutputListener(this);
+		Console.getInstance().registerErrorListener(this);
+		Console.getInstance().registerTraceListener(this);
+		Console.getInstance().registerExceptionListener(this);
 	}
 
@@ -118,14 +127,3 @@
 	}
 
-	/**
-	 * <p>
-	 * The {@link TextConsole} ignores this notification.
-	 * </p>
-	 * 
-	 * @see de.ugoe.cs.util.console.ConsoleObserver#commandNotification(java.lang.String)
-	 */
-	@Override
-	public void commandNotification(String command) {
-		// ignores the notification
-	}
 }
Index: trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/ICommandListener.java
===================================================================
--- trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/ICommandListener.java	(revision 199)
+++ trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/ICommandListener.java	(revision 199)
@@ -0,0 +1,25 @@
+package de.ugoe.cs.util.console.listener;
+
+import de.ugoe.cs.util.console.CommandExecuter;
+
+/**
+ * <p>
+ * Interface for listeners observing the commands executed by the
+ * {@link CommandExecuter}.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public interface ICommandListener {
+	/**
+	 * <p>
+	 * Receives the command strings of all executed by the
+	 * {@link CommandExecuter}.
+	 * </p>
+	 * 
+	 * @param command
+	 *            string of the command.
+	 */
+	public void commandNotification(String command);
+}
Index: trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IErrorListener.java
===================================================================
--- trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IErrorListener.java	(revision 199)
+++ trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IErrorListener.java	(revision 199)
@@ -0,0 +1,26 @@
+package de.ugoe.cs.util.console.listener;
+
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Interface for listeners observing the error stream of the {@link Console}.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public interface IErrorListener {
+
+	/**
+	 * <p>
+	 * Receives messages send to the error stream of the {@link Console}.
+	 * </p>
+	 * 
+	 * TODO: rename method to errorMsg()
+	 * 
+	 * @param errMessage
+	 *            error message
+	 */
+	public void errStream(String errMessage);
+}
Index: trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IExceptionListener.java
===================================================================
--- trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IExceptionListener.java	(revision 199)
+++ trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IExceptionListener.java	(revision 199)
@@ -0,0 +1,24 @@
+package de.ugoe.cs.util.console.listener;
+
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Received all exceptions passed to the {@link Console} for logging.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public interface IExceptionListener {
+
+	/**
+	 * <p>
+	 * Logs an exception passed to the {@link Console}.
+	 * </p>
+	 * 
+	 * @param e
+	 *            Exception that is logged
+	 */
+	public void printStacktrace(Exception e);
+}
Index: trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IOutputListener.java
===================================================================
--- trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IOutputListener.java	(revision 199)
+++ trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/IOutputListener.java	(revision 199)
@@ -0,0 +1,27 @@
+package de.ugoe.cs.util.console.listener;
+
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Interface for listeners observing the output stream of the {@link Console}.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public interface IOutputListener {
+
+	/**
+	 * <p>
+	 * Receives messages send to the output stream of the {@link Console}.
+	 * </p>
+	 * 
+	 * TODO: rename method to outputMsg()
+	 * 
+	 * @param newMessage
+	 *            message that was send to the console.
+	 */
+	public void updateText(String newMessage);
+
+}
Index: trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/ITraceListener.java
===================================================================
--- trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/ITraceListener.java	(revision 199)
+++ trunk/JavaHelperLib/src/de/ugoe/cs/util/console/listener/ITraceListener.java	(revision 199)
@@ -0,0 +1,25 @@
+package de.ugoe.cs.util.console.listener;
+
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Interface for listeners observing traces stream to the {@link Console}.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public interface ITraceListener {
+	/**
+	 * <p>
+	 * Receives messages send to the trace stream of the {@link Console}.
+	 * </p>
+	 * 
+	 * TODO: rename method to traceMsg()
+	 * 
+	 * @param traceMesssage
+	 *            error message
+	 */
+	public void trace(String traceMessage);
+}
