Index: trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/HighOrderMarkovModel.java
===================================================================
--- trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/HighOrderMarkovModel.java	(revision 79)
+++ trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/HighOrderMarkovModel.java	(revision 80)
@@ -12,10 +12,15 @@
 		super(maxOrder, r);
 	}
-		
+	
 	@Override
-	protected double getProbability(List<Event<?>> context, Event<?> symbol) {
+	public double getProbability(List<Event<?>> context, Event<?> symbol) {
 		double result = 0.0d;
 		
-		List<Event<?>> contextCopy = new LinkedList<Event<?>>(context);
+		List<Event<?>> contextCopy;
+		if( context.size()>=trieOrder ) {
+			contextCopy = new LinkedList<Event<?>>(context.subList(context.size()-trieOrder+1, context.size()));
+		} else {
+			contextCopy = new LinkedList<Event<?>>(context);
+		}
 
 	
Index: trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/IStochasticProcess.java
===================================================================
--- trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/IStochasticProcess.java	(revision 79)
+++ trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/IStochasticProcess.java	(revision 80)
@@ -2,8 +2,11 @@
 
 import java.util.List;
+import java.util.Set;
 
 import de.ugoe.cs.eventbench.data.Event;
 
 public interface IStochasticProcess {
+	
+	double getProbability(List<Event<?>> context, Event<?> symbol);
 
 	public List<? extends Event<?>> randomSequence();
@@ -12,4 +15,6 @@
 	
 	public String[] getStateStrings();
+	
+	public Set<Event<?>> getEvents();
 
 }
Index: trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/PredictionByPartialMatch.java
===================================================================
--- trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/PredictionByPartialMatch.java	(revision 79)
+++ trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/PredictionByPartialMatch.java	(revision 80)
@@ -29,10 +29,15 @@
 	
 	@Override
-	protected double getProbability(List<Event<?>> context, Event<?> symbol) {
+	public double getProbability(List<Event<?>> context, Event<?> symbol) {
 		double result = 0.0d;
 		double resultCurrentContex = 0.0d;
 		double resultShorterContex = 0.0d;
 		
-		List<Event<?>> contextCopy = new LinkedList<Event<?>>(context); // defensive copy
+		List<Event<?>> contextCopy;
+		if( context.size()>=trieOrder ) {
+			contextCopy = new LinkedList<Event<?>>(context.subList(context.size()-trieOrder+1, context.size()));
+		} else {
+			contextCopy = new LinkedList<Event<?>>(context);
+		}
 
 	
@@ -47,5 +52,10 @@
 			resultCurrentContex = ((double) countSymbol) / sumCountFollowers;
 		} else {
-			resultCurrentContex = ((double) countSymbol / sumCountFollowers)*(1-probEscape);
+			if( sumCountFollowers==0 ) {
+				resultCurrentContex = 0.0;
+			}
+			else {
+				resultCurrentContex = ((double) countSymbol / sumCountFollowers)*(1-probEscape);
+			}
 			contextCopy.remove(0); 
 			double probSuffix = getProbability(contextCopy, symbol);
Index: trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieBasedModel.java
===================================================================
--- trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieBasedModel.java	(revision 79)
+++ trunk/EventBenchCore/src/de/ugoe/cs/eventbench/models/TrieBasedModel.java	(revision 80)
@@ -4,4 +4,5 @@
 import java.util.List;
 import java.util.Random;
+import java.util.Set;
 
 import de.ugoe.cs.eventbench.data.Event;
@@ -13,6 +14,4 @@
 
 	protected int trieOrder;
-
-	protected abstract double getProbability(List<Event<?>> context, Event<?> symbol);
 
 	protected Trie<Event<?>> trie;
@@ -99,4 +98,8 @@
 		return stateStrings;
 	}
+	
+	public Set<Event<?>> getEvents() {
+		return trie.getKnownSymbols();
+	}
 
 }
