Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/AbstractTrainCommand.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/AbstractTrainCommand.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/AbstractTrainCommand.java	(revision 209)
@@ -5,4 +5,5 @@
 import java.util.List;
 
+import de.ugoe.cs.eventbench.SequenceInstanceOf;
 import de.ugoe.cs.eventbench.data.Event;
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
@@ -69,5 +70,4 @@
 		}
 
-		Collection<List<Event<?>>> sequences = null;
 		Object dataObject = GlobalDataContainer.getInstance().getData(
 				sequencesName);
@@ -77,27 +77,17 @@
 			return;
 		}
-		try {
-			sequences = (Collection<List<Event<?>>>) dataObject;
-		} catch (ClassCastException e) {
+		if (!SequenceInstanceOf.isCollectionOfSequences(dataObject)) {
 			Console.println("Object " + sequencesName
 					+ "not of type Collection<List<Event<?>>>.");
 			return;
 		}
-		/* TODO implement better type check
-		if (sequences.size() == 0 || !(sequences.get(0).get(0) instanceof Event) ) {
-			Console.println("Object " + sequencesName
-					+ "not of type Collection<List<Event<?>>>.");
-			return;
-		}
-		*/
+		Collection<List<Event<?>>> sequences = (Collection<List<Event<?>>>) dataObject;
 
 		TrieBasedModel model = createModel();
 		model.train(sequences);
-		if (GlobalDataContainer.getInstance().addData(modelname,
-				model)) {
-			Console.traceln("Old data \"" + modelname
-					+ "\" overwritten");
+		if (GlobalDataContainer.getInstance().addData(modelname, model)) {
+			Console.traceln("Old data \"" + modelname + "\" overwritten");
 		}
-		
+
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcCoverage.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcCoverage.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcCoverage.java	(revision 209)
@@ -5,4 +5,5 @@
 import java.util.List;
 
+import de.ugoe.cs.eventbench.SequenceInstanceOf;
 import de.ugoe.cs.eventbench.coverage.CoverageCalculatorObserved;
 import de.ugoe.cs.eventbench.coverage.CoverageCalculatorProcess;
@@ -68,7 +69,7 @@
 			return;
 		}
-		if (!(dataObjectObserved instanceof Collection<?>)) {
-			// weak instance check!
-			Console.printerrln("Object " + observedName + " not a Collection!");
+		if (!SequenceInstanceOf.isCollectionOfSequences(dataObjectObserved)) {
+			Console.printerrln("Object " + observedName
+					+ " of type Collection<List<Event<?>>>!");
 			return;
 		}
@@ -98,9 +99,9 @@
 				Console.println("Sequences " + sequenceName
 						+ " not found in storage.");
-			} else if (!(dataObjectSequences instanceof Collection<?>)) {
-				// cannot really perform type check at runtime! this is an
-				// approximative substitute
+				return;
+			} else if (!SequenceInstanceOf
+					.isCollectionOfSequences(dataObjectSequences)) {
 				Console.printerrln("Object " + sequenceName
-						+ "not of type Collection<?>!");
+						+ "not of type Collection<List<Event<?>!");
 				return;
 			}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcEntropy.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcEntropy.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcEntropy.java	(revision 209)
@@ -1,3 +1,4 @@
 package de.ugoe.cs.eventbench.commands;
+
 import java.security.InvalidParameterException;
 import java.util.List;
@@ -18,5 +19,7 @@
 public class CMDcalcEntropy implements Command {
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see de.ugoe.cs.util.console.Command#help()
 	 */
@@ -26,5 +29,7 @@
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
 	 */
@@ -37,18 +42,21 @@
 			throw new InvalidParameterException();
 		}
-		
-		FirstOrderMarkovModel model = null; 
-		Object dataObject = GlobalDataContainer.getInstance().getData(modelname);
-		if( dataObject==null ) {
+
+		FirstOrderMarkovModel model = null;
+		Object dataObject = GlobalDataContainer.getInstance()
+				.getData(modelname);
+		if (dataObject == null) {
 			Console.println("Model " + modelname + "not found in storage.");
+			return;
 		}
-		else if( !(dataObject instanceof FirstOrderMarkovModel) ) {
-			Console.println("Object " + modelname + " is not a first-order Markov model!");
-		} else {
-			model = (FirstOrderMarkovModel) dataObject;
-			double entropy = model.calcEntropy();
-			if( !Double.isNaN(entropy) ) {
-				Console.println("entropy: " + entropy);
-			}
+		if (!(dataObject instanceof FirstOrderMarkovModel)) {
+			Console.println("Object " + modelname
+					+ " is not a first-order Markov model!");
+			return;
+		}
+		model = (FirstOrderMarkovModel) dataObject;
+		double entropy = model.calcEntropy();
+		if (!Double.isNaN(entropy)) {
+			Console.println("entropy: " + entropy);
 		}
 	}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateFixedLengthSequences.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateFixedLengthSequences.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateFixedLengthSequences.java	(revision 209)
@@ -60,56 +60,54 @@
 		if (dataObject == null) {
 			Console.println("Model " + modelname + " not found in storage.");
+			return;
 		} else if (!(dataObject instanceof IStochasticProcess)) {
 			Console.println("Object " + modelname + " not of type MarkovModel!");
-		} else {
-			model = (IStochasticProcess) dataObject;
-			Collection<List<? extends Event<?>>> sequences = new LinkedHashSet<List<? extends Event<?>>>();
-			for (int length = minLength; length <= maxLength; length++) {
-				sequences.addAll(model.generateValidSequences(length + 2));
+			return;
+		}
+		model = (IStochasticProcess) dataObject;
+		Collection<List<? extends Event<?>>> sequences = new LinkedHashSet<List<? extends Event<?>>>();
+		for (int length = minLength; length <= maxLength; length++) {
+			sequences.addAll(model.generateValidSequences(length + 2));
+		}
+		Console.traceln("" + sequences.size() + " possible");
+		if (!all && numSequences < sequences.size()) {
+			List<Double> probabilities = new ArrayList<Double>(sequences.size());
+			double probSum = 0.0;
+			for (List<? extends Event<?>> sequence : sequences) {
+				double prob = model.getProbability(sequence);
+				probabilities.add(prob);
+				probSum += prob;
 			}
-			Console.traceln("" + sequences.size() + " possible");
-			if (!all && numSequences < sequences.size()) {
-				List<Double> probabilities = new ArrayList<Double>(
-						sequences.size());
-				double probSum = 0.0;
-				for (List<? extends Event<?>> sequence : sequences) {
-					double prob = model.getProbability(sequence);
-					probabilities.add(prob);
-					probSum += prob;
+			Set<Integer> drawnSequences = new HashSet<Integer>(numSequences);
+			Random r = new Random();
+			while (drawnSequences.size() < numSequences) {
+				double randVal = r.nextDouble() * probSum;
+				double sum = 0.0d;
+				int index = -1;
+				while (sum < randVal) {
+					index++;
+					double currentProb = probabilities.get(index);
+					sum += currentProb;
 				}
-				Set<Integer> drawnSequences = new HashSet<Integer>(numSequences);
-				Random r = new Random();
-				while (drawnSequences.size() < numSequences) {
-					double randVal = r.nextDouble() * probSum;
-					double sum = 0.0d;
-					int index = -1;
-					while (sum < randVal) {
-						index++;
-						double currentProb = probabilities.get(index);
-						sum += currentProb;
-					}
-					if (!drawnSequences.contains(index)) {
-						drawnSequences.add(index);
-						probSum -= probabilities.get(index);
-						probabilities.set(index, 0.0d);
-					}
+				if (!drawnSequences.contains(index)) {
+					drawnSequences.add(index);
+					probSum -= probabilities.get(index);
+					probabilities.set(index, 0.0d);
 				}
-				Collection<List<? extends Event<?>>> retainedSequences = new LinkedList<List<? extends Event<?>>>();
-				int index = 0;
-				for (List<? extends Event<?>> sequence : sequences) {
-					if (drawnSequences.contains(index)) {
-						retainedSequences.add(sequence);
-					}
-					index++;
+			}
+			Collection<List<? extends Event<?>>> retainedSequences = new LinkedList<List<? extends Event<?>>>();
+			int index = 0;
+			for (List<? extends Event<?>> sequence : sequences) {
+				if (drawnSequences.contains(index)) {
+					retainedSequences.add(sequence);
 				}
-				sequences = retainedSequences;
+				index++;
 			}
-			if (GlobalDataContainer.getInstance().addData(sequencesName,
-					sequences)) {
-				Console.traceln("Old data \"" + sequencesName
-						+ "\" overwritten");
-			}
-			Console.println("" + sequences.size() + " sequences generated");
+			sequences = retainedSequences;
 		}
+		if (GlobalDataContainer.getInstance().addData(sequencesName, sequences)) {
+			Console.traceln("Old data \"" + sequencesName + "\" overwritten");
+		}
+		Console.println("" + sequences.size() + " sequences generated");
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomReplay.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomReplay.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomReplay.java	(revision 209)
@@ -59,20 +59,22 @@
 		if (dataObject == null) {
 			Console.println("Model " + modelname + " not found in storage.");
-		} else if (!(dataObject instanceof IStochasticProcess)) {
+			return;
+		}
+		if (!(dataObject instanceof IStochasticProcess)) {
 			Console.println("Object " + modelname + " not of type MarkovModel!");
-		} else {
-			model = (IStochasticProcess) dataObject;
-			Collection<List<ReplayableEvent<?>>> sequences = new LinkedList<List<ReplayableEvent<?>>>();
-			try {
-				for (int i = 0; i < numSessions; i++) {
-					sequences.add((List<ReplayableEvent<?>>) model
-							.randomSequence());
-				}
-			} catch (ClassCastException e) {
-				Console.println("Modeled events don't support replay.");
+			return;
+		}
+		model = (IStochasticProcess) dataObject;
+		Collection<List<ReplayableEvent<?>>> sequences = new LinkedList<List<ReplayableEvent<?>>>();
+		try {
+			for (int i = 0; i < numSessions; i++) {
+				sequences
+						.add((List<ReplayableEvent<?>>) model.randomSequence());
 			}
-			ReplayGenerator generator = new ReplayGenerator();
-			generator.createLogfileMultipleSessions(sequences, filename);
+		} catch (ClassCastException e) {
+			Console.println("Modeled events don't support replay.");
 		}
+		ReplayGenerator generator = new ReplayGenerator();
+		generator.createLogfileMultipleSessions(sequences, filename);
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomSequences.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomSequences.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomSequences.java	(revision 209)
@@ -13,5 +13,8 @@
 
 /**
- * <p>Command to generate random sessions.</p>
+ * <p>
+ * Command to generate random sessions.
+ * </p>
+ * 
  * @author Steffen Herbold
  * @version 1.0
@@ -19,5 +22,7 @@
 public class CMDgenerateRandomSequences implements Command {
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
 	 */
@@ -34,47 +39,54 @@
 			sequencesName = (String) parameters.get(1);
 			numSessions = Integer.parseInt((String) parameters.get(2));
-			maxIter = numSessions*10;
-			if( parameters.size()>=4 ) {
+			maxIter = numSessions * 10;
+			if (parameters.size() >= 4) {
 				maxIter = Long.parseLong((String) parameters.get(3));
 			}
-			if( parameters.size()>=5 ) {
+			if (parameters.size() >= 5) {
 				minLength = Integer.parseInt((String) parameters.get(4));
 			}
-			if( parameters.size()>=6 ) {
+			if (parameters.size() >= 6) {
 				maxLength = Integer.parseInt((String) parameters.get(5));
 			}
-		}
-		catch (Exception e) {
+		} catch (Exception e) {
 			throw new InvalidParameterException();
 		}
-		
-		IStochasticProcess model = null; 
-		Object dataObject = GlobalDataContainer.getInstance().getData(modelname);
-		if( dataObject==null ) {
+
+		IStochasticProcess model = null;
+		Object dataObject = GlobalDataContainer.getInstance()
+				.getData(modelname);
+		if (dataObject == null) {
 			Console.println("Model " + modelname + " not found in storage.");
+			return;
 		}
-		else if( !(dataObject instanceof IStochasticProcess) ) {
+		if (!(dataObject instanceof IStochasticProcess)) {
 			Console.println("Object " + modelname + " not of type MarkovModel!");
-		} else {
-			model = (IStochasticProcess) dataObject;
-			Set<List<? extends Event<?>>> sequences = new HashSet<List<? extends Event<?>>>(numSessions);
-			long numIterations = 0;
-			while( sequences.size()<numSessions && numIterations<maxIter ) {
-				List<? extends Event<?>> generatedSequence = model.randomSequence();
-				if( generatedSequence.size()>=minLength && generatedSequence.size()<=maxLength ) {
-					sequences.add(generatedSequence);
-				}
-				numIterations++;
+			return;
+		}
+		model = (IStochasticProcess) dataObject;
+		Set<List<? extends Event<?>>> sequences = new HashSet<List<? extends Event<?>>>(
+				numSessions);
+		long numIterations = 0;
+		while (sequences.size() < numSessions && numIterations < maxIter) {
+			List<? extends Event<?>> generatedSequence = model.randomSequence();
+			if (generatedSequence.size() >= minLength
+					&& generatedSequence.size() <= maxLength) {
+				sequences.add(generatedSequence);
 			}
-			if( sequences.size() < numSessions ) {
-				Console.println("Only " + sequences.size() + " unique sessions generated after " + maxIter + " iterations");
-			}
-			if( GlobalDataContainer.getInstance().addData(sequencesName, sequences) ) {
-				Console.traceln("Old data \"" + sequencesName + "\" overwritten");
-			}
+			numIterations++;
+		}
+		if (sequences.size() < numSessions) {
+			Console.println("Only " + sequences.size()
+					+ " unique sessions generated after " + maxIter
+					+ " iterations");
+		}
+		if (GlobalDataContainer.getInstance().addData(sequencesName, sequences)) {
+			Console.traceln("Old data \"" + sequencesName + "\" overwritten");
 		}
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see de.ugoe.cs.util.console.Command#help()
 	 */
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateReplayfile.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateReplayfile.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateReplayfile.java	(revision 209)
@@ -6,5 +6,5 @@
 
 import de.ugoe.cs.eventbench.ReplayGenerator;
-import de.ugoe.cs.eventbench.data.Event;
+import de.ugoe.cs.eventbench.SequenceInstanceOf;
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
 import de.ugoe.cs.eventbench.data.ReplayableEvent;
@@ -13,5 +13,8 @@
 
 /**
- * <p>Command to create a replay file from stored sessions.</p>
+ * <p>
+ * Command to create a replay file from stored sessions.
+ * </p>
+ * 
  * @author Steffen Herbold
  * @version 1.0
@@ -19,13 +22,17 @@
 public class CMDgenerateReplayfile implements Command {
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see de.ugoe.cs.util.console.Command#help()
 	 */
 	@Override
 	public void help() {
-		Console.println("Usage: generateReplayfile <filename> {<sequences>}");		
+		Console.println("Usage: generateReplayfile <filename> {<sequences>}");
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
 	 */
@@ -33,33 +40,30 @@
 	@Override
 	public void run(List<Object> parameters) {
-		if( parameters.size() < 1 ) {
+		if (parameters.size() < 1) {
 			throw new InvalidParameterException();
 		}
 		String filename = (String) parameters.get(0);
 		String sequencesName = "sequences";
-		if( parameters.size()==2 ) {
+		if (parameters.size() == 2) {
 			sequencesName = (String) parameters.get(1);
 		}
-		
+
 		Collection<List<ReplayableEvent<?>>> sequences = null;
-		Object dataObject = GlobalDataContainer.getInstance().getData(sequencesName);
-			
-		try {
-			sequences = (Collection<List<ReplayableEvent<?>>>) dataObject;
-			ReplayGenerator generator = new ReplayGenerator();
-			if( sequences!=null && sequences.size()>0 && sequences.iterator().next().get(0) instanceof Event ) {
-				generator.createLogfileMultipleSessions(sequences, filename);
-			} else {
-				Console.printerrln("Loaded data not are not sequences!");
-				if( sequencesName.equals("sequences") ) { 
-					Console.traceln("Illegal use of \"sequences\" parameter in the GlobalDataContainer.");
-					Console.traceln("The parameter should always be of type Collection<List<Event>>!");
-				}
-			}
+		Object dataObject = GlobalDataContainer.getInstance().getData(
+				sequencesName);
+		if (dataObject == null) {
+			Console.println("Object " + sequencesName
+					+ " not found in storage.");
+			return;
 		}
-		catch(ClassCastException e) {
-			Console.printerrln("Sequences not found");
+		if (!SequenceInstanceOf.isCollectionOfSequences(dataObject)) {
+			Console.println("Object " + sequencesName
+					+ "not of type Collection<List<Event<?>>>.");
+			return;
 		}
-		
+
+		sequences = (Collection<List<ReplayableEvent<?>>>) dataObject;
+		ReplayGenerator generator = new ReplayGenerator();
+		generator.createLogfileMultipleSessions(sequences, filename);
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDlistSymbols.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDlistSymbols.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDlistSymbols.java	(revision 209)
@@ -44,16 +44,18 @@
 		if (dataObject == null) {
 			Console.println("Model " + modelname + "not found in storage.");
-		} else if (!(dataObject instanceof IStochasticProcess)) {
+			return;
+		}
+		if (!(dataObject instanceof IStochasticProcess)) {
 			Console.println("Object " + modelname
 					+ " is not a stochastic process!");
-		} else {
-			model = (IStochasticProcess) dataObject;
-			String[] stateStrings = model.getSymbolStrings();
-			if (sort) {
-				Arrays.sort(stateStrings);
-			}
-			for (String stateString : stateStrings) {
-				Console.println(stateString);
-			}
+			return;
+		}
+		model = (IStochasticProcess) dataObject;
+		String[] stateStrings = model.getSymbolStrings();
+		if (sort) {
+			Arrays.sort(stateStrings);
+		}
+		for (String stateString : stateStrings) {
+			Console.println(stateString);
 		}
 	}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDload.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDload.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDload.java	(revision 209)
@@ -43,7 +43,7 @@
 			in.close();
 		} catch (IOException ex) {
-			ex.printStackTrace();
+			Console.printStacktrace(ex);
 		} catch (ClassNotFoundException ex) {
-			ex.printStackTrace();
+			Console.printStacktrace(ex);
 		}
 	}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDloadObject.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDloadObject.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDloadObject.java	(revision 209)
@@ -47,7 +47,7 @@
 			in.close();
 		} catch (IOException ex) {
-			ex.printStackTrace();
+			Console.printStacktrace(ex);
 		} catch (ClassNotFoundException ex) {
-			ex.printStackTrace();
+			Console.printStacktrace(ex);
 		}
 		if (GlobalDataContainer.getInstance().addData(objectName, data)) {
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintDot.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintDot.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintDot.java	(revision 209)
@@ -49,11 +49,14 @@
 		if (dataObject == null) {
 			Console.println("Model " + modelname + "not found in storage.");
-		} else if (!(dataObject instanceof IDotCompatible)) {
+			return;
+		}
+		if (!(dataObject instanceof IDotCompatible)) {
 			Console.println("Object " + modelname
 					+ " does not implement IDotCompatible!");
-		} else {
-			model = (IDotCompatible) dataObject;
-			Console.println(model.getDotRepresentation());
+			return;
 		}
+
+		model = (IDotCompatible) dataObject;
+		Console.println(model.getDotRepresentation());
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintRandomSession.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintRandomSession.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintRandomSession.java	(revision 209)
@@ -49,11 +49,14 @@
 		if (dataObject == null) {
 			Console.println("Model " + modelname + " not found in storage.");
-		} else if (!(dataObject instanceof IStochasticProcess)) {
+			return;
+		}
+		if (!(dataObject instanceof IStochasticProcess)) {
 			Console.println("Object " + modelname + " not of type MarkovModel!");
-		} else {
-			model = (IStochasticProcess) dataObject;
-			for (Event<?> event : model.randomSequence()) {
-				Console.println(event.toString());
-			}
+			return;
+		}
+
+		model = (IStochasticProcess) dataObject;
+		for (Event<?> event : model.randomSequence()) {
+			Console.println(event.toString());
 		}
 	}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintTrieDot.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintTrieDot.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintTrieDot.java	(revision 209)
@@ -50,10 +50,13 @@
 		if (dataObject == null) {
 			Console.println("Model " + modelname + "not found in storage.");
-		} else if (!(dataObject instanceof TrieBasedModel)) {
+			return;
+		}
+		if (!(dataObject instanceof TrieBasedModel)) {
 			Console.println("Object " + modelname + " is not a TrieBasedModel!");
-		} else {
-			model = (TrieBasedModel) dataObject;
-			Console.println(model.getTrieDotRepresentation());
+			return;
 		}
+
+		model = (TrieBasedModel) dataObject;
+		Console.println(model.getTrieDotRepresentation());
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsave.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsave.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsave.java	(revision 209)
@@ -43,5 +43,5 @@
 			out.close();
 		} catch (IOException ex) {
-			ex.printStackTrace();
+			Console.printStacktrace(ex);
 		}
 	}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsaveObject.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsaveObject.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsaveObject.java	(revision 209)
@@ -52,5 +52,5 @@
 			out.close();
 		} catch (IOException ex) {
-			ex.printStackTrace();
+			Console.printStacktrace(ex);
 		}
 	}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsequenceStatistics.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsequenceStatistics.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDsequenceStatistics.java	(revision 209)
@@ -7,4 +7,5 @@
 import java.util.TreeMap;
 
+import de.ugoe.cs.eventbench.SequenceInstanceOf;
 import de.ugoe.cs.eventbench.data.Event;
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
@@ -39,24 +40,29 @@
 		Object dataObject = GlobalDataContainer.getInstance().getData(
 				sequencesName);
+		if (dataObject == null) {
+			Console.println("Object " + sequencesName
+					+ " not found in storage.");
+			return;
+		}
+		if (!SequenceInstanceOf.isCollectionOfSequences(dataObject)) {
+			Console.println("Object " + sequencesName
+					+ "not of type Collection<List<Event<?>>>.");
+			return;
+		}
 
-		try {
-			sequences = (Collection<List<Event<?>>>) dataObject;
-			Console.traceln("Number of Sequences: " + sequences.size());
-			SortedMap<Integer, Integer> lengthMap = new TreeMap<Integer, Integer>();
-			for (List<Event<?>> sequence : sequences) {
-				Integer currentSize = sequence.size();
-				if (lengthMap.containsKey(currentSize)) {
-					lengthMap.put(currentSize, lengthMap.get(currentSize) + 1);
-				} else {
-					lengthMap.put(currentSize, 1);
-				}
+		sequences = (Collection<List<Event<?>>>) dataObject;
+		Console.traceln("Number of Sequences: " + sequences.size());
+		SortedMap<Integer, Integer> lengthMap = new TreeMap<Integer, Integer>();
+		for (List<Event<?>> sequence : sequences) {
+			Integer currentSize = sequence.size();
+			if (lengthMap.containsKey(currentSize)) {
+				lengthMap.put(currentSize, lengthMap.get(currentSize) + 1);
+			} else {
+				lengthMap.put(currentSize, 1);
 			}
-			for (Entry<Integer, Integer> entry : lengthMap.entrySet()) {
-				Console.traceln("Of length " + entry.getKey() + ": "
-						+ entry.getValue());
-			}
-
-		} catch (ClassCastException e) {
-			Console.println("Sequences not found");
+		}
+		for (Entry<Integer, Integer> entry : lengthMap.entrySet()) {
+			Console.traceln("Of length " + entry.getKey() + ": "
+					+ entry.getValue());
 		}
 	}
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowMarkovModel.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowMarkovModel.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowMarkovModel.java	(revision 209)
@@ -65,45 +65,50 @@
 				.getData(modelname);
 		if (dataObject == null) {
-			Console.printerrln("No model with name " + modelname + "found");
-		} else {
-			FirstOrderMarkovModel mm = (FirstOrderMarkovModel) dataObject;
+			Console.println("Object " + modelname + " not found in storage.");
+			return;
+		}
+		if (!(dataObject instanceof FirstOrderMarkovModel)) {
+			Console.println("Object " + modelname
+					+ "not of type FirstOrderMarkovModel.");
+			return;
+		}
+		FirstOrderMarkovModel mm = (FirstOrderMarkovModel) dataObject;
 
-			Graph<String, MarkovEdge> graph = mm.getGraph();
-			Layout<String, MarkovEdge> layout = new ISOMLayout<String, MarkovEdge>(
-					graph);
-			layout.setSize(new Dimension(1000, 800)); // sets the initial size
-														// of the space
-			// The BasicVisualizationServer<V,E> is parameterized by the edge
-			// types
-			BasicVisualizationServer<String, MarkovEdge> vv = new BasicVisualizationServer<String, MarkovEdge>(
-					layout);
-			vv.setPreferredSize(new Dimension(1100, 850)); // Sets the viewing
-															// area size
+		Graph<String, MarkovEdge> graph = mm.getGraph();
+		Layout<String, MarkovEdge> layout = new ISOMLayout<String, MarkovEdge>(
+				graph);
+		layout.setSize(new Dimension(1000, 800)); // sets the initial size
+													// of the space
+		// The BasicVisualizationServer<V,E> is parameterized by the edge
+		// types
+		BasicVisualizationServer<String, MarkovEdge> vv = new BasicVisualizationServer<String, MarkovEdge>(
+				layout);
+		vv.setPreferredSize(new Dimension(1100, 850)); // Sets the viewing
+														// area size
 
-			if (showNodeNames) {
-				final Rectangle rect = new Rectangle(240, 20);
+		if (showNodeNames) {
+			final Rectangle rect = new Rectangle(240, 20);
 
-				Transformer<String, Shape> vertexShapeTransformer = new Transformer<String, Shape>() {
-					public Shape transform(String s) {
-						return rect;
-					}
-				};
-				vv.getRenderer().getVertexLabelRenderer()
-						.setPosition(Position.CNTR);
-				vv.getRenderContext().setVertexShapeTransformer(
-						vertexShapeTransformer);
-				vv.getRenderContext().setVertexLabelTransformer(
-						new ToStringLabeller<String>());
-			}
+			Transformer<String, Shape> vertexShapeTransformer = new Transformer<String, Shape>() {
+				public Shape transform(String s) {
+					return rect;
+				}
+			};
+			vv.getRenderer().getVertexLabelRenderer()
+					.setPosition(Position.CNTR);
+			vv.getRenderContext().setVertexShapeTransformer(
+					vertexShapeTransformer);
+			vv.getRenderContext().setVertexLabelTransformer(
+					new ToStringLabeller<String>());
+		}
 
-			vv.getRenderContext().setEdgeLabelTransformer(
-					new ToStringLabeller<MarkovEdge>());
+		vv.getRenderContext().setEdgeLabelTransformer(
+				new ToStringLabeller<MarkovEdge>());
 
-			JFrame frame = new JFrame("Markov Model");
-			frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-			frame.getContentPane().add(vv);
-			frame.pack();
-			frame.setVisible(true);
-		}
+		JFrame frame = new JFrame("Markov Model");
+		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+		frame.getContentPane().add(vv);
+		frame.pack();
+		frame.setVisible(true);
 	}
 }
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowTrie.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowTrie.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowTrie.java	(revision 209)
@@ -62,37 +62,39 @@
 				.getData(modelname);
 		if (dataObject == null) {
-			Console.printerrln("No model with name " + modelname + "found");
-		} else {
-			TrieBasedModel model = (TrieBasedModel) dataObject;
-			Tree<TrieVertex, Edge> graph = model.getTrieGraph();
-			Layout<TrieVertex, Edge> layout = new TreeLayout<TrieVertex, Edge>(
-					graph, 60);
-			// The BasicVisualizationServer<V,E> is parameterized by the edge
-			// types
-			BasicVisualizationServer<TrieVertex, Edge> vv = new BasicVisualizationServer<TrieVertex, Edge>(
-					layout);
-			vv.setPreferredSize(new Dimension(1100, 850)); // Sets the viewing
-															// area size
+			Console.printerrln("Object " + modelname + " not found in storage.");
+			return;
+		}
+		if (!(dataObject instanceof TrieBasedModel)) {
+			Console.printerr("Object " + modelname
+					+ " not of type TrieBasedModel.");
+		}
+		TrieBasedModel model = (TrieBasedModel) dataObject;
+		Tree<TrieVertex, Edge> graph = model.getTrieGraph();
+		Layout<TrieVertex, Edge> layout = new TreeLayout<TrieVertex, Edge>(
+				graph, 60);
+		// The BasicVisualizationServer<V,E> is parameterized by the edge
+		// types
+		BasicVisualizationServer<TrieVertex, Edge> vv = new BasicVisualizationServer<TrieVertex, Edge>(
+				layout);
+		vv.setPreferredSize(new Dimension(1100, 850)); // Sets the viewing
+														// area size
 
-			final Rectangle rect = new Rectangle(40, 20);
+		final Rectangle rect = new Rectangle(40, 20);
 
-			Transformer<TrieVertex, Shape> vertexShapeTransformer = new Transformer<TrieVertex, Shape>() {
-				public Shape transform(TrieVertex s) {
-					return rect;
-				}
-			};
-			vv.getRenderer().getVertexLabelRenderer()
-					.setPosition(Position.CNTR);
-			vv.getRenderContext().setVertexShapeTransformer(
-					vertexShapeTransformer);
-			vv.getRenderContext().setVertexLabelTransformer(
-					new ToStringLabeller<TrieVertex>());
+		Transformer<TrieVertex, Shape> vertexShapeTransformer = new Transformer<TrieVertex, Shape>() {
+			public Shape transform(TrieVertex s) {
+				return rect;
+			}
+		};
+		vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR);
+		vv.getRenderContext().setVertexShapeTransformer(vertexShapeTransformer);
+		vv.getRenderContext().setVertexLabelTransformer(
+				new ToStringLabeller<TrieVertex>());
 
-			JFrame frame = new JFrame("Trie");
-			frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-			frame.getContentPane().add(vv);
-			frame.pack();
-			frame.setVisible(true);
-		}
+		JFrame frame = new JFrame("Trie");
+		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+		frame.getContentPane().add(vv);
+		frame.pack();
+		frame.setVisible(true);
 	}
 
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDupdateModel.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDupdateModel.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDupdateModel.java	(revision 209)
@@ -5,4 +5,5 @@
 import java.util.List;
 
+import de.ugoe.cs.eventbench.SequenceInstanceOf;
 import de.ugoe.cs.eventbench.data.Event;
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
@@ -39,5 +40,4 @@
 		}
 
-		Collection<List<Event<?>>> sequences = null;
 		Object dataObject = GlobalDataContainer.getInstance().getData(
 				sequencesName);
@@ -47,27 +47,22 @@
 			return;
 		}
-		try {
-			sequences = (Collection<List<Event<?>>>) dataObject;
-		} catch (ClassCastException e) {
-			Console.println("Object " + sequencesName
-					+ "not of type Collection<List<Event<?>>>.");
-		}
-		if (sequences.size() == 0
-				|| !(sequences.iterator().next().get(0) instanceof Event)) {
+		if (!SequenceInstanceOf.isCollectionOfSequences(dataObject)) {
 			Console.println("Object " + sequencesName
 					+ "not of type Collection<List<Event<?>>>.");
 			return;
 		}
+		Collection<List<Event<?>>> sequences = (Collection<List<Event<?>>>) dataObject;
 
 		dataObject = GlobalDataContainer.getInstance().getData(modelname);
 		if (dataObject == null) {
-			Console.println("Model " + modelname + " not found in storage.");
+			Console.println("Object " + modelname + " not found in storage.");
 			return;
 		}
 		if (!(dataObject instanceof TrieBasedModel)) {
 			Console.println("Object " + modelname
-					+ " not of type TrieBasedModel!");
+					+ " not of type TrieBasedModel");
 			return;
 		}
+
 		TrieBasedModel model = (TrieBasedModel) dataObject;
 		model.update(sequences);
Index: /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/data/GlobalDataContainer.java
===================================================================
--- /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/data/GlobalDataContainer.java	(revision 208)
+++ /trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/data/GlobalDataContainer.java	(revision 209)
@@ -8,8 +8,8 @@
 import java.util.HashMap;
 import java.util.LinkedList;
-import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import de.ugoe.cs.eventbench.SequenceInstanceOf;
 import de.ugoe.cs.eventbench.models.IStochasticProcess;
 
@@ -188,12 +188,6 @@
 		Collection<String> allSequencesNames = new LinkedList<String>();
 		for (Entry<String, Object> entry : dataObjects.entrySet()) {
-			if (entry.getValue() instanceof Collection<?>) {
-				Object listObj = ((Collection<?>) entry.getValue()).iterator()
-						.next();
-				if (listObj instanceof List<?>) {
-					if (((List<?>) listObj).iterator().next() instanceof Event<?>) {
-						allSequencesNames.add(entry.getKey());
-					}
-				}
+			if( SequenceInstanceOf.isCollectionOfSequences(entry.getValue())) {
+				allSequencesNames.add(entry.getKey());
 			}
 		}
