Index: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/EventGenerator.java
===================================================================
--- trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/EventGenerator.java	(revision 15)
+++ trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/EventGenerator.java	(revision 18)
@@ -143,6 +143,6 @@
 		for (int ruleIndex = 0; ruleIndex < ruleElements.size() && !isMatch; ruleIndex++) {
 			Element currentRule = ruleElements.get(ruleIndex);
+			currentRuleName = currentRule.getAttributeValue("name");
 			currentToken = new ReplayableEvent<WindowsMessage>(currentRuleName);
-			currentRuleName = currentRule.getAttributeValue("name");
 			isMatch = true;
 			messageStorage = new HashMap<String, Object>();
Index: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcEntropy.java
===================================================================
--- trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcEntropy.java	(revision 15)
+++ trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDcalcEntropy.java	(revision 18)
@@ -4,5 +4,5 @@
 
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
-import de.ugoe.cs.eventbench.markov.MarkovModel;
+import de.ugoe.cs.eventbench.models.FirstOrderMarkovModel;
 import de.ugoe.cs.util.console.Command;
 import de.ugoe.cs.util.console.Console;
@@ -25,13 +25,13 @@
 		}
 		
-		MarkovModel model = null; 
+		FirstOrderMarkovModel model = null; 
 		Object dataObject = GlobalDataContainer.getInstance().getData(modelname);
 		if( dataObject==null ) {
 			Console.println("Model " + modelname + "not found in storage.");
 		}
-		else if( !(dataObject instanceof MarkovModel) ) {
-			Console.println("Object " + modelname + " is not a markov model!");
+		else if( !(dataObject instanceof FirstOrderMarkovModel) ) {
+			Console.println("Object " + modelname + " is not a first-order Markov model!");
 		} else {
-			model = (MarkovModel) dataObject;
+			model = (FirstOrderMarkovModel) dataObject;
 			double entropy = model.calcEntropy();
 			if( Double.isNaN(entropy) ) {
Index: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomReplay.java
===================================================================
--- trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomReplay.java	(revision 15)
+++ trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDgenerateRandomReplay.java	(revision 18)
@@ -8,5 +8,5 @@
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
 import de.ugoe.cs.eventbench.data.ReplayableEvent;
-import de.ugoe.cs.eventbench.markov.MarkovModel;
+import de.ugoe.cs.eventbench.models.IStochasticProcess;
 import de.ugoe.cs.util.console.Command;
 import de.ugoe.cs.util.console.Console;
@@ -36,13 +36,13 @@
 		}
 		
-		MarkovModel model = null; 
+		IStochasticProcess model = null; 
 		Object dataObject = GlobalDataContainer.getInstance().getData(modelname);
 		if( dataObject==null ) {
 			Console.println("Model " + modelname + " not found in storage.");
 		}
-		else if( !(dataObject instanceof MarkovModel) ) {
+		else if( !(dataObject instanceof IStochasticProcess) ) {
 			Console.println("Object " + modelname + " not of type MarkovModel!");
 		} else {
-			model = (MarkovModel) dataObject;
+			model = (IStochasticProcess) dataObject;
 			List<List<ReplayableEvent<?>>> sequences = new LinkedList<List<ReplayableEvent<?>>>();
 			try {
Index: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintRandomSession.java
===================================================================
--- trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintRandomSession.java	(revision 15)
+++ trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDprintRandomSession.java	(revision 18)
@@ -6,5 +6,5 @@
 import de.ugoe.cs.eventbench.data.Event;
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
-import de.ugoe.cs.eventbench.markov.MarkovModel;
+import de.ugoe.cs.eventbench.models.IStochasticProcess;
 import de.ugoe.cs.util.console.Command;
 import de.ugoe.cs.util.console.Console;
@@ -27,13 +27,13 @@
 		}
 		
-		MarkovModel model = null; 
+		IStochasticProcess model = null; 
 		Object dataObject = GlobalDataContainer.getInstance().getData(modelname);
 		if( dataObject==null ) {
 			Console.println("Model " + modelname + " not found in storage.");
 		}
-		else if( !(dataObject instanceof MarkovModel) ) {
+		else if( !(dataObject instanceof IStochasticProcess) ) {
 			Console.println("Object " + modelname + " not of type MarkovModel!");
 		} else {
-			model = (MarkovModel) dataObject;
+			model = (IStochasticProcess) dataObject;
 			for( Event<?> event : model.randomSequence() ) {
 				Console.println(event.toString());
Index: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowMarkovModel.java
===================================================================
--- trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowMarkovModel.java	(revision 15)
+++ trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDshowMarkovModel.java	(revision 18)
@@ -12,6 +12,6 @@
 
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
-import de.ugoe.cs.eventbench.markov.MarkovModel;
-import de.ugoe.cs.eventbench.markov.MarkovModel.MarkovEdge;
+import de.ugoe.cs.eventbench.models.FirstOrderMarkovModel;
+import de.ugoe.cs.eventbench.models.FirstOrderMarkovModel.MarkovEdge;
 import de.ugoe.cs.util.console.Command;
 import de.ugoe.cs.util.console.Console;
@@ -47,5 +47,5 @@
 			Console.printerrln("No model with name " + modelname + "found");
 		} else {
-			MarkovModel mm = (MarkovModel) dataObject;
+			FirstOrderMarkovModel mm = (FirstOrderMarkovModel) dataObject;
 			
 			Graph<String, MarkovEdge> graph = mm.getGraph();
@@ -57,5 +57,4 @@
 			vv.setPreferredSize(new Dimension(1100,850)); //Sets the viewing area size
 
-			
 			if( showNodeNames ) {
 				final Rectangle rect = new Rectangle(240, 20);
@@ -72,6 +71,5 @@
 			}
 			
-			
-			vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller<MarkovModel.MarkovEdge>());
+			vv.getRenderContext().setEdgeLabelTransformer(new ToStringLabeller<MarkovEdge>());
 			
 			JFrame frame = new JFrame("Markov Model");
@@ -82,5 +80,3 @@
 		}
 	}
-	
-	
 }
Index: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtest.java
===================================================================
--- trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtest.java	(revision 18)
+++ trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtest.java	(revision 18)
@@ -0,0 +1,24 @@
+package de.ugoe.cs.eventbench.commands;
+
+import java.util.List;
+import java.util.Random;
+
+import de.ugoe.cs.eventbench.models.PredictionByPartialMatch;
+import de.ugoe.cs.util.console.Command;
+
+public class CMDtest implements Command {
+
+	@Override
+	public void run(List<Object> parameters) {
+		PredictionByPartialMatch ppm = new PredictionByPartialMatch(3, new Random());
+		ppm.testStuff();
+
+	}
+
+	@Override
+	public void help() {
+		// TODO Auto-generated method stub
+
+	}
+
+}
Index: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtrainMarkovModel.java
===================================================================
--- trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtrainMarkovModel.java	(revision 15)
+++ trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtrainMarkovModel.java	(revision 18)
@@ -4,8 +4,10 @@
 import java.security.InvalidParameterException;
 import java.util.List;
+import java.util.Random;
 
 import de.ugoe.cs.eventbench.data.Event;
 import de.ugoe.cs.eventbench.data.GlobalDataContainer;
-import de.ugoe.cs.eventbench.markov.MarkovModel;
+import de.ugoe.cs.eventbench.models.FirstOrderMarkovModel;
+import de.ugoe.cs.eventbench.models.HighOrderMarkovModel;
 import de.ugoe.cs.util.console.Command;
 import de.ugoe.cs.util.console.Console;
@@ -15,5 +17,5 @@
 	@Override
 	public void help() {
-		Console.println("Usage: trainMarkovModel <modelName>");
+		Console.println("Usage: trainMarkovModel <modelName> {<order>}");
 	}
 
@@ -22,6 +24,10 @@
 	public void run(List<Object> parameters) {
 		String modelname;
+		int order = 1;
 		try {
 			modelname = (String) parameters.get(0);
+			if( parameters.size()==2 ) {
+				order = Integer.parseInt((String) parameters.get(0));
+			}
 		} catch (Exception e) {
 			throw new InvalidParameterException();
@@ -35,5 +41,10 @@
 			if( sequences.size()>0 ) {
 				if( sequences.get(0).get(0) instanceof Event ) {
-					MarkovModel model = new MarkovModel();
+					HighOrderMarkovModel model;
+					if( order==1 ) {
+						model = new FirstOrderMarkovModel(new Random());
+					} else {
+						model = new HighOrderMarkovModel(order, new Random());
+					}
 					model.train(sequences);
 					if( GlobalDataContainer.getInstance().addData(modelname, model) ) {
Index: trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtrainPPM.java
===================================================================
--- trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtrainPPM.java	(revision 15)
+++ trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/commands/CMDtrainPPM.java	(revision 18)
@@ -41,8 +41,5 @@
 					if( GlobalDataContainer.getInstance().addData(modelname, model) ) {
 						Console.traceln("Old model overwritten");
-					}
-					// TODO TMP!!
-					Console.traceln(model.randomSequence().toString());
-					
+					}					
 				} else {
 					Console.traceln("Illegal use of \"sequences\" parameter in the GlobalDataContainer.");
