Index: unk/quest-core-assertions-test/src/test/java/de/ugoe/cs/quest/assertions/AssertEventTest.java
===================================================================
--- /trunk/quest-core-assertions-test/src/test/java/de/ugoe/cs/quest/assertions/AssertEventTest.java	(revision 547)
+++ 	(revision )
@@ -1,38 +1,0 @@
-package de.ugoe.cs.quest.assertions;
-
-import org.junit.*;
-
-import de.ugoe.cs.quest.assertions.AssertEvent;
-import de.ugoe.cs.quest.eventcore.mock.MockReplayable;
-import static org.junit.Assert.*;
-
-/**
- * The class <code>AssertEventTest</code> contains tests for the class
- * <code>{@link AssertEvent}</code>.
- * 
- * @author Steffen Herbold
- * @version 1.0
- */
-public class AssertEventTest {
-
-	@Test
-	public void testAssertEvent_1() throws Exception {
-		String type = "typeString";
-
-		AssertEvent<MockReplayable> result = new AssertEvent<MockReplayable>(
-				type);
-
-		assertNotNull(result);
-		assertEquals(type, result.getType());
-	}
-
-	@Test(expected = java.security.InvalidParameterException.class)
-	public void testAssertEvent_2() throws Exception {
-
-		new AssertEvent<MockReplayable>(null);
-	}
-
-	public static void main(String[] args) {
-		new org.junit.runner.JUnitCore().run(AssertEventTest.class);
-	}
-}
Index: /trunk/quest-core-assertions-test/src/test/java/de/ugoe/cs/quest/assertions/FileEqualsReplayTest.java
===================================================================
--- /trunk/quest-core-assertions-test/src/test/java/de/ugoe/cs/quest/assertions/FileEqualsReplayTest.java	(revision 547)
+++ /trunk/quest-core-assertions-test/src/test/java/de/ugoe/cs/quest/assertions/FileEqualsReplayTest.java	(revision 548)
@@ -66,13 +66,4 @@
 	}
 
-	@Test
-	public void testGetTarget_1() throws Exception {
-		FileEqualsReplay fixture = new FileEqualsReplay("", "");
-
-		String result = fixture.getTarget();
-
-		assertEquals("targetNotUsed", result);
-	}
-
 	public static void main(String[] args) {
 		new org.junit.runner.JUnitCore().run(FileEqualsReplayTest.class);
Index: unk/quest-core-assertions-test/src/test/java/de/ugoe/cs/quest/assertions/TestAll.java
===================================================================
--- /trunk/quest-core-assertions-test/src/test/java/de/ugoe/cs/quest/assertions/TestAll.java	(revision 547)
+++ 	(revision )
@@ -1,27 +1,0 @@
-package de.ugoe.cs.quest.assertions;
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * The class <code>TestAll</code> builds a suite that can be used to run all
- * of the tests within its package as well as within any subpackages of its
- * package.
- *
- * @generatedBy CodePro at 12/21/11 11:53 AM
- * @author Steffen Herbold
- * @version 1.0
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-	FileEqualsReplayTest.class,
-	TextEqualsReplayTest.class,
-	AssertEventTest.class
-})
-public class TestAll {
-
-	public static void main(String[] args) {
-		JUnitCore.runClasses(new Class[] { TestAll.class });
-	}
-}
Index: /trunk/quest-core-assertions/.classpath
===================================================================
--- /trunk/quest-core-assertions/.classpath	(revision 547)
+++ /trunk/quest-core-assertions/.classpath	(revision 548)
@@ -2,4 +2,10 @@
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 		<attributes>
 			<attribute name="optional" value="true"/>
Index: unk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/AssertEvent.java
===================================================================
--- /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/AssertEvent.java	(revision 547)
+++ 	(revision )
@@ -1,41 +1,0 @@
-package de.ugoe.cs.quest.assertions;
-
-import de.ugoe.cs.quest.eventcore.Event;
-import de.ugoe.cs.quest.eventcore.IReplayable;
-import de.ugoe.cs.quest.eventcore.ReplayableEvent;
-
-/**
- * <p>
- * Subclass of {@link ReplayableEvent} for assertions
- * </p>
- * 
- * @author Jeffrey Hall
- * @version 1.0
- * 
- * @param <T>
- *            Allows only types that extend {@link IReplayable} and is used to
- *            define the type of the assertion.
- * 
- */
-public class AssertEvent<T extends IReplayable> extends ReplayableEvent<T> {
-
-	/**
-	 * <p>
-	 * Id for object serialization.
-	 * </p>
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * <p>
-	 * Constructor. Creates a new event with the given type.
-	 * <p>
-	 * 
-	 * @param type
-	 *            type of the event
-	 * @see Event#Event(String)
-	 */
-	public AssertEvent(String type) {
-		super(type);
-	}
-}
Index: /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/FileEqualsAssertEvent.java
===================================================================
--- /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/FileEqualsAssertEvent.java	(revision 548)
+++ /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/FileEqualsAssertEvent.java	(revision 548)
@@ -0,0 +1,24 @@
+package de.ugoe.cs.quest.assertions;
+
+import de.ugoe.cs.quest.eventcore.IEventType;
+
+/**
+ * 
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @version $Revision: $ $Date: Aug 16, 2012$
+ * @author 2012, last modified by $Author: sherbold$
+ */
+public class FileEqualsAssertEvent implements IEventType {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public String getName() {
+        return "FileEqualsAssertion";
+    }
+
+}
Index: /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/FileEqualsReplay.java
===================================================================
--- /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/FileEqualsReplay.java	(revision 547)
+++ /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/FileEqualsReplay.java	(revision 548)
@@ -79,13 +79,3 @@
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see de.ugoe.cs.quest.eventcore.IReplayable#getTarget()
-	 */
-	@Override
-	public String getTarget() {
-		return "targetNotUsed";
-	}
-
 }
Index: /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/TextEqualsAssertEventType.java
===================================================================
--- /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/TextEqualsAssertEventType.java	(revision 548)
+++ /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/TextEqualsAssertEventType.java	(revision 548)
@@ -0,0 +1,24 @@
+package de.ugoe.cs.quest.assertions;
+
+import de.ugoe.cs.quest.eventcore.IEventType;
+
+/**
+ * 
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @version $Revision: $ $Date: Aug 16, 2012$
+ * @author 2012, last modified by $Author: sherbold$
+ */
+public class TextEqualsAssertEventType implements IEventType {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public String getName() {
+        return "TextEqualsAssertion";
+    }
+
+}
Index: /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/TextEqualsReplay.java
===================================================================
--- /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/TextEqualsReplay.java	(revision 547)
+++ /trunk/quest-core-assertions/src/main/java/de/ugoe/cs/quest/assertions/TextEqualsReplay.java	(revision 548)
@@ -87,5 +87,5 @@
 	 * @see de.ugoe.cs.quest.eventcore.IReplayable#getTarget()
 	 */
-	@Override
+	//@Override TODO
 	public String getTarget() {
 		return target;
Index: /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/CoverageCalculatorObservedTest.java
===================================================================
--- /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/CoverageCalculatorObservedTest.java	(revision 547)
+++ /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/CoverageCalculatorObservedTest.java	(revision 548)
@@ -6,4 +6,5 @@
 import de.ugoe.cs.quest.eventcore.Event;
 import de.ugoe.cs.quest.usageprofiles.MockTrieBasedModel;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 
 import java.util.LinkedHashSet;
@@ -26,9 +27,9 @@
 public class CoverageCalculatorObservedTest {
 	
-	Collection<List<? extends Event<?>>> sequencesObserved;
-	
-	Set<List<? extends Event<?>>> sequencesCovered;
-	Set<List<? extends Event<?>>> sequencesCovered2;
-	Set<List<? extends Event<?>>> sequencesNewPossible;
+	Collection<List<Event>> sequencesObserved;
+	
+	Set<List<Event>> sequencesCovered;
+	Set<List<Event>> sequencesCovered2;
+	Set<List<Event>> sequencesNewPossible;
 	
 	MockTrieBasedModel mockProcess;
@@ -257,46 +258,46 @@
 	@Before
 	public void setUp() throws Exception {
-		sequencesObserved = new LinkedList<List<? extends Event<?>>>();
-		List<Event<?>> sequence1 = new ArrayList<Event<?>>();
-		sequence1.add(new Event<String>("a"));
-		sequence1.add(new Event<String>("b"));
-		sequence1.add(new Event<String>("r"));
-		sequence1.add(new Event<String>("a"));
-		List<Event<?>> sequence2 = new ArrayList<Event<?>>();
-		sequence2.add(new Event<String>("c"));
-		sequence2.add(new Event<String>("a"));
-		sequence2.add(new Event<String>("d"));
-		sequence2.add(new Event<String>("a"));
-		sequence2.add(new Event<String>("b"));
-		sequence2.add(new Event<String>("r"));
-		sequence2.add(new Event<String>("a"));
+		sequencesObserved = new LinkedList<List<Event>>();
+		List<Event> sequence1 = new ArrayList<Event>();
+		sequence1.add(new Event(new StringEventType("a")));
+		sequence1.add(new Event(new StringEventType("b")));
+		sequence1.add(new Event(new StringEventType("r")));
+		sequence1.add(new Event(new StringEventType("a")));
+		List<Event> sequence2 = new ArrayList<Event>();
+		sequence2.add(new Event(new StringEventType("c")));
+		sequence2.add(new Event(new StringEventType("a")));
+		sequence2.add(new Event(new StringEventType("d")));
+		sequence2.add(new Event(new StringEventType("a")));
+		sequence2.add(new Event(new StringEventType("b")));
+		sequence2.add(new Event(new StringEventType("r")));
+		sequence2.add(new Event(new StringEventType("a")));
 		sequencesObserved.add(sequence1);
 		sequencesObserved.add(sequence2);
 
-		sequencesCovered = new LinkedHashSet<List<? extends Event<?>>>();
-		List<Event<?>> tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("a"));
-		tmpList.add(new Event<String>("b"));
-		tmpList.add(new Event<String>("r"));
+		sequencesCovered = new LinkedHashSet<List<Event>>();
+		List<Event> tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("a")));
+		tmpList.add(new Event(new StringEventType("b")));
+		tmpList.add(new Event(new StringEventType("r")));
 		sequencesCovered.add(tmpList);
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("b"));
-		tmpList.add(new Event<String>("r"));
-		tmpList.add(new Event<String>("a"));
-		tmpList.add(new Event<String>("e"));
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("b")));
+		tmpList.add(new Event(new StringEventType("r")));
+		tmpList.add(new Event(new StringEventType("a")));
+		tmpList.add(new Event(new StringEventType("e")));
 		sequencesCovered.add(tmpList);
 
-		sequencesCovered2 = new LinkedHashSet<List<? extends Event<?>>>();
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("a"));
-		tmpList.add(new Event<String>("b"));
-		tmpList.add(new Event<String>("r"));
+		sequencesCovered2 = new LinkedHashSet<List<Event>>();
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("a")));
+		tmpList.add(new Event(new StringEventType("b")));
+		tmpList.add(new Event(new StringEventType("r")));
 		sequencesCovered2.add(tmpList);
 		
-		sequencesNewPossible = new LinkedHashSet<List<? extends Event<?>>>();
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("r"));
-		tmpList.add(new Event<String>("a"));
-		tmpList.add(new Event<String>("b"));
+		sequencesNewPossible = new LinkedHashSet<List<Event>>();
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("r")));
+		tmpList.add(new Event(new StringEventType("a")));
+		tmpList.add(new Event(new StringEventType("b")));
 		sequencesNewPossible.add(tmpList);
 		
Index: /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/CoverageCalculatorProcessTest.java
===================================================================
--- /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/CoverageCalculatorProcessTest.java	(revision 547)
+++ /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/CoverageCalculatorProcessTest.java	(revision 548)
@@ -12,4 +12,5 @@
 import de.ugoe.cs.quest.eventcore.Event;
 import de.ugoe.cs.quest.usageprofiles.MockTrieBasedModel;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 
 import org.junit.*;
@@ -26,6 +27,6 @@
 public class CoverageCalculatorProcessTest {
 
-	Set<List<? extends Event<?>>> sequencesCovered;
-	Set<List<? extends Event<?>>> sequencesCovered2;
+	Set<List<Event>> sequencesCovered;
+	Set<List<Event>> sequencesCovered2;
 	MockTrieBasedModel mockProcess;
 
@@ -189,38 +190,38 @@
 	@Before
 	public void setUp() throws Exception {
-		Collection<List<? extends Event<?>>> sequences = new LinkedList<List<? extends Event<?>>>();
-		List<Event<?>> sequence1 = new ArrayList<Event<?>>();
-		sequence1.add(new Event<String>("a"));
-		sequence1.add(new Event<String>("b"));
-		sequence1.add(new Event<String>("r"));
-		sequence1.add(new Event<String>("a"));
-		List<Event<?>> sequence2 = new ArrayList<Event<?>>();
-		sequence2.add(new Event<String>("c"));
-		sequence2.add(new Event<String>("a"));
-		sequence2.add(new Event<String>("d"));
-		sequence2.add(new Event<String>("a"));
-		sequence2.add(new Event<String>("b"));
-		sequence2.add(new Event<String>("r"));
-		sequence2.add(new Event<String>("a"));
+		Collection<List<Event>> sequences = new LinkedList<List<Event>>();
+		List<Event> sequence1 = new ArrayList<Event>();
+		sequence1.add(new Event(new StringEventType("a")));
+		sequence1.add(new Event(new StringEventType("b")));
+		sequence1.add(new Event(new StringEventType("r")));
+		sequence1.add(new Event(new StringEventType("a")));
+		List<Event> sequence2 = new ArrayList<Event>();
+		sequence2.add(new Event(new StringEventType("c")));
+		sequence2.add(new Event(new StringEventType("a")));
+		sequence2.add(new Event(new StringEventType("d")));
+		sequence2.add(new Event(new StringEventType("a")));
+		sequence2.add(new Event(new StringEventType("b")));
+		sequence2.add(new Event(new StringEventType("r")));
+		sequence2.add(new Event(new StringEventType("a")));
 		sequences.add(sequence1);
 		sequences.add(sequence2);
 
-		sequencesCovered = new LinkedHashSet<List<? extends Event<?>>>();
-		List<Event<?>> tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("a"));
-		tmpList.add(new Event<String>("b"));
-		tmpList.add(new Event<String>("r"));
+		sequencesCovered = new LinkedHashSet<List<Event>>();
+		List<Event> tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("a")));
+		tmpList.add(new Event(new StringEventType("b")));
+		tmpList.add(new Event(new StringEventType("r")));
 		sequencesCovered.add(tmpList);
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("b"));
-		tmpList.add(new Event<String>("r"));
-		tmpList.add(new Event<String>("a"));
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("b")));
+		tmpList.add(new Event(new StringEventType("r")));
+		tmpList.add(new Event(new StringEventType("a")));
 		sequencesCovered.add(tmpList);
 
-		sequencesCovered2 = new LinkedHashSet<List<? extends Event<?>>>();
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("a"));
-		tmpList.add(new Event<String>("b"));
-		tmpList.add(new Event<String>("r"));
+		sequencesCovered2 = new LinkedHashSet<List<Event>>();
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("a")));
+		tmpList.add(new Event(new StringEventType("b")));
+		tmpList.add(new Event(new StringEventType("r")));
 		sequencesCovered2.add(tmpList);
 
Index: /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/SequenceToolsTest.java
===================================================================
--- /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/SequenceToolsTest.java	(revision 547)
+++ /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/SequenceToolsTest.java	(revision 548)
@@ -15,4 +15,5 @@
 import de.ugoe.cs.quest.usageprofiles.IStochasticProcess;
 import de.ugoe.cs.quest.usageprofiles.MockTrieBasedModel;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 
 import org.junit.*;
@@ -28,6 +29,6 @@
 public class SequenceToolsTest {
 	
-	Collection<List<? extends Event<?>>> sequences;
-	Set<List<? extends Event<?>>> subSequences;
+	Collection<List<Event>> sequences;
+	Set<List<Event>> subSequences;
 	MockTrieBasedModel mockProcess;
 	
@@ -37,5 +38,5 @@
 		int length = 2;
 
-		Set<List<? extends Event<?>>> result = SequenceTools.containedSubSequences(sequences, length);
+		Set<List<Event>> result = SequenceTools.containedSubSequences(sequences, length);
 
 		assertNotNull(result);
@@ -49,5 +50,5 @@
 		int length = 2;
 
-		Set<List<? extends Event<?>>> result = SequenceTools.containedSubSequences(null, length);
+		Set<List<Event>> result = SequenceTools.containedSubSequences(null, length);
 		assertNotNull(result);
 		assertTrue(result.isEmpty());
@@ -73,10 +74,10 @@
 	public void testGenerateWeights_1()
 		throws Exception {
-		Map<List<? extends Event<?>>, Double> result = SequenceTools.generateWeights(mockProcess, subSequences);
-
-		assertNotNull(result);
-		Set<Entry<List<? extends Event<?>>, Double>> entrySet = result.entrySet();
+		Map<List<Event>, Double> result = SequenceTools.generateWeights(mockProcess, subSequences);
+
+		assertNotNull(result);
+		Set<Entry<List<Event>, Double>> entrySet = result.entrySet();
 		assertEquals(subSequences.size(),entrySet.size());
-		for( Entry<List<? extends Event<?>>, Double> entry : entrySet ) {
+		for( Entry<List<Event>, Double> entry : entrySet ) {
 			assertEquals(Double.valueOf(2.0d), entry.getValue());
 			assertTrue(subSequences.contains(entry.getKey()));
@@ -87,9 +88,9 @@
 	public void testGenerateWeights_2()
 		throws Exception {
-		Map<List<? extends Event<?>>, Double> result = SequenceTools.generateWeights(null, subSequences);
-		
-		Set<Entry<List<? extends Event<?>>, Double>> entrySet = result.entrySet();
+		Map<List<Event>, Double> result = SequenceTools.generateWeights(null, subSequences);
+		
+		Set<Entry<List<Event>, Double>> entrySet = result.entrySet();
 		assertEquals(subSequences.size(),entrySet.size());
-		for( Entry<List<? extends Event<?>>, Double> entry : entrySet ) {
+		for( Entry<List<Event>, Double> entry : entrySet ) {
 			assertEquals(Double.valueOf(0.0d), entry.getValue());
 			assertTrue(subSequences.contains(entry.getKey()));
@@ -100,5 +101,5 @@
 	public void testGenerateWeights_3()
 		throws Exception {
-		Map<List<? extends Event<?>>, Double> result = SequenceTools.generateWeights(mockProcess, null);
+		Map<List<Event>, Double> result = SequenceTools.generateWeights(mockProcess, null);
 		
 		assertNotNull(result);
@@ -148,45 +149,45 @@
 	public void setUp()
 		throws Exception {
-		sequences = new LinkedList<List<? extends Event<?>>>();
-		List<Event<?>> sequence1 = new ArrayList<Event<?>>();
-		sequence1.add(new Event<String>("a"));
-		sequence1.add(new Event<String>("b"));
-		sequence1.add(new Event<String>("r"));
-		sequence1.add(new Event<String>("a"));
-		List<Event<?>> sequence2 = new ArrayList<Event<?>>();
-		sequence2.add(new Event<String>("c"));
-		sequence2.add(new Event<String>("a"));
-		sequence2.add(new Event<String>("d"));
-		sequence2.add(new Event<String>("a"));
-		sequence2.add(new Event<String>("b"));
-		sequence2.add(new Event<String>("r"));
-		sequence2.add(new Event<String>("a"));
+		sequences = new LinkedList<List<Event>>();
+		List<Event> sequence1 = new ArrayList<Event>();
+		sequence1.add(new Event(new StringEventType("a")));
+		sequence1.add(new Event(new StringEventType("b")));
+		sequence1.add(new Event(new StringEventType("r")));
+		sequence1.add(new Event(new StringEventType("a")));
+		List<Event> sequence2 = new ArrayList<Event>();
+		sequence2.add(new Event(new StringEventType("c")));
+		sequence2.add(new Event(new StringEventType("a")));
+		sequence2.add(new Event(new StringEventType("d")));
+		sequence2.add(new Event(new StringEventType("a")));
+		sequence2.add(new Event(new StringEventType("b")));
+		sequence2.add(new Event(new StringEventType("r")));
+		sequence2.add(new Event(new StringEventType("a")));
 		sequences.add(sequence1);
 		sequences.add(sequence2);
 		
-		subSequences = new LinkedHashSet<List<? extends Event<?>>>();
-		List<Event<?>> tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("a"));
-		tmpList.add(new Event<String>("b"));
-		subSequences.add(tmpList);
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("b"));
-		tmpList.add(new Event<String>("r"));
-		subSequences.add(tmpList);
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("r"));
-		tmpList.add(new Event<String>("a"));
-		subSequences.add(tmpList);
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("c"));
-		tmpList.add(new Event<String>("a"));
-		subSequences.add(tmpList);
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("a"));
-		tmpList.add(new Event<String>("d"));
-		subSequences.add(tmpList);
-		tmpList = new ArrayList<Event<?>>();
-		tmpList.add(new Event<String>("d"));
-		tmpList.add(new Event<String>("a"));
+		subSequences = new LinkedHashSet<List<Event>>();
+		List<Event> tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("a")));
+		tmpList.add(new Event(new StringEventType("b")));
+		subSequences.add(tmpList);
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("b")));
+		tmpList.add(new Event(new StringEventType("r")));
+		subSequences.add(tmpList);
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("r")));
+		tmpList.add(new Event(new StringEventType("a")));
+		subSequences.add(tmpList);
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("c")));
+		tmpList.add(new Event(new StringEventType("a")));
+		subSequences.add(tmpList);
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("a")));
+		tmpList.add(new Event(new StringEventType("d")));
+		subSequences.add(tmpList);
+		tmpList = new ArrayList<Event>();
+		tmpList.add(new Event(new StringEventType("d")));
+		tmpList.add(new Event(new StringEventType("a")));
 		subSequences.add(tmpList);
 		
Index: unk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/TestAll.java
===================================================================
--- /trunk/quest-core-coverage-test/src/test/java/de/ugoe/cs/quest/coverage/TestAll.java	(revision 547)
+++ 	(revision )
@@ -1,26 +1,0 @@
-package de.ugoe.cs.quest.coverage;
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * The class <code>TestAll</code> builds a suite that can be used to run all
- * of the tests within its package as well as within any subpackages of its
- * package.
- *
- * @author Steffen Herbold
- * @version 1.0
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-	CoverageCalculatorObservedTest.class,
-	CoverageCalculatorProcessTest.class,
-	SequenceToolsTest.class
-})
-public class TestAll {
-
-	public static void main(String[] args) {
-		JUnitCore.runClasses(new Class[] { TestAll.class });
-	}
-}
Index: /trunk/quest-core-coverage/.classpath
===================================================================
--- /trunk/quest-core-coverage/.classpath	(revision 547)
+++ /trunk/quest-core-coverage/.classpath	(revision 548)
@@ -2,4 +2,10 @@
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 		<attributes>
 			<attribute name="optional" value="true"/>
Index: /trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/SequenceInstanceOfTest.java
===================================================================
--- /trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/SequenceInstanceOfTest.java	(revision 547)
+++ /trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/SequenceInstanceOfTest.java	(revision 548)
@@ -9,7 +9,9 @@
 
 import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
 
 import de.ugoe.cs.quest.SequenceInstanceOf;
 import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.IEventType;
 
 
@@ -27,5 +29,5 @@
 		Collection<List<Event>> sequences = new LinkedList<List<Event>>();
 		List<Event> sequence1 = new ArrayList<Event>();
-		sequence1.add(new Event<String>("a"));
+		sequence1.add(new Event(mock(IEventType.class)));
 		sequences.add(sequence1);
 		
@@ -67,5 +69,5 @@
 	public void TestIsEventSequence_1() throws Exception {
 		List<Event> sequence = new ArrayList<Event>();
-		sequence.add(new Event<String>("a"));
+		sequence.add(new Event(mock(IEventType.class)));
 		
 		boolean result = SequenceInstanceOf.isEventSequence(sequence);
Index: /trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/EventTest.java
===================================================================
--- /trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/EventTest.java	(revision 547)
+++ /trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/EventTest.java	(revision 548)
@@ -2,4 +2,7 @@
 package de.ugoe.cs.quest.eventcore;
 
+
+import java.util.LinkedList;
+import java.util.List;
 
 import org.junit.*;
@@ -225,4 +228,60 @@
         assertEquals("(typeString;targetString)", result);
     }
+    
+    @Test
+    public void testAddReplayable_1() throws Exception {
+        IReplayable replayable = mock(IReplayable.class);
+
+        Event fixture = new Event(mock(IEventType.class));
+        fixture.addReplayable(replayable);
+
+        assertEquals(1, fixture.getReplayables().size());
+        assertEquals(replayable, fixture.getReplayables().get(0));
+    }
+
+    @Test
+    public void testAddReplayEvent_2() throws Exception {
+        IReplayable replayable1 = mock(IReplayable.class);
+        IReplayable replayable2 = mock(IReplayable.class);
+
+        Event fixture = new Event(mock(IEventType.class));
+        fixture.addReplayable(replayable1);
+        fixture.addReplayable(replayable2);
+
+        assertEquals(2, fixture.getReplayables().size());
+        assertEquals(replayable1, fixture.getReplayables().get(0));
+        assertEquals(replayable2, fixture.getReplayables().get(1));
+    }
+
+    @Test(expected = java.security.InvalidParameterException.class)
+    public void testAddReplayEvent_fixture_3() throws Exception {
+        Event fixture = new Event(mock(IEventType.class));
+        fixture.addReplayable(null);
+    }
+
+    @Test
+    public void testAddReplaySequence_1() throws Exception {
+        IReplayable replayable1 = mock(IReplayable.class);
+        IReplayable replayable2 = mock(IReplayable.class);
+
+        List<IReplayable> replayableSequences = new LinkedList<IReplayable>();
+        replayableSequences.add(replayable1);
+        replayableSequences.add(replayable2);
+
+        Event fixture = new Event(mock(IEventType.class));
+
+        fixture.addReplayableSequence(replayableSequences);
+
+        assertEquals(2, fixture.getReplayables().size());
+        assertEquals(replayable1, fixture.getReplayables().get(0));
+        assertEquals(replayable2, fixture.getReplayables().get(1));
+    }
+
+    @Test(expected = java.security.InvalidParameterException.class)
+    public void testAddReplaySequence_2() throws Exception {
+        Event fixture = new Event(mock(IEventType.class));
+
+        fixture.addReplayableSequence(null);
+    }
 
     public static void main(String[] args) {
Index: unk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/ReplayableEventTest.java
===================================================================
--- /trunk/quest-core-events-test/src/test/java/de/ugoe/cs/quest/eventcore/ReplayableEventTest.java	(revision 547)
+++ 	(revision )
@@ -1,474 +1,0 @@
-package de.ugoe.cs.quest.eventcore;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import junitx.framework.ListAssert;
-import de.ugoe.cs.quest.IReplayDecorator;
-import de.ugoe.cs.quest.eventcore.ReplayableEvent;
-import de.ugoe.cs.quest.eventcore.mock.MockReplayable;
-
-import org.junit.*;
-import static org.junit.Assert.*;
-
-/**
- * The class <code>ReplayableEventTest</code> contains tests for the class
- * <code>{@link ReplayableEvent}</code>.
- * 
- * @generatedBy CodePro at 12/20/11 10:17 AM
- * @author Steffen Herbold
- * @version 1.0
- */
-public class ReplayableEventTest {
-
-	private static class StubReplayDecorator implements IReplayDecorator {
-
-		private static final long serialVersionUID = 1L;
-
-		@Override
-		public String getHeader() {
-			return null;
-		}
-
-		@Override
-		public String getFooter() {
-			return null;
-		}
-
-		@Override
-		public String getSessionHeader(int sessionId) {
-			return null;
-		}
-
-		@Override
-		public String getSessionFooter(int sessionId) {
-			return null;
-		}
-		
-	}
-
-	@Test
-	public void testReplayableEvent_1() throws Exception {
-		String type = "typeString";
-
-		ReplayableEvent<MockReplayable> result = new ReplayableEvent<MockReplayable>(
-				type);
-
-		assertNotNull(result);
-		assertNotNull(result.replayEvents);
-		assertTrue(result.replayEvents.isEmpty());
-		assertEquals(true, result.replayValid);
-		assertEquals(null, result.decorator);
-	}
-
-	@Test(expected = java.security.InvalidParameterException.class)
-	public void testReplayableEvent_2() throws Exception {
-		new ReplayableEvent<MockReplayable>(null);
-	}
-
-	@Test
-	public void testAddReplayEvent_1() throws Exception {
-		String type = "typeString";
-		String replayableReplay = "replayString";
-		String replaybleTarget = "replayTargetString";
-		MockReplayable replayable = new MockReplayable(replayableReplay,
-				replaybleTarget);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.addReplayEvent(replayable);
-		
-		
-		assertEquals(1, fixture.replayEvents.size());
-		assertEquals(replayable, fixture.replayEvents.get(0));
-	}
-	
-	@Test
-	public void testAddReplayEvent_2() throws Exception {
-		String type = "typeString";
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replaybleTarget1 = "replayTargetString1";
-		String replaybleTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replaybleTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replaybleTarget2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.addReplayEvent(replayable1);
-		fixture.addReplayEvent(replayable2);
-		
-		
-		assertEquals(2, fixture.replayEvents.size());
-		assertEquals(replayable1, fixture.replayEvents.get(0));
-		assertEquals(replayable2, fixture.replayEvents.get(1));
-	}
-
-	@Test(expected = java.security.InvalidParameterException.class )
-	public void testAddReplayEvent_fixture_3() throws Exception {
-		String type = "typeString";
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.addReplayEvent(null);
-	}
-
-	@Test
-	public void testAddReplaySequence_1() throws Exception {
-		String type = "typeString";
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replaybleTarget1 = "replayTargetString1";
-		String replaybleTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replaybleTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replaybleTarget2);
-		List<MockReplayable> replaySequence = new LinkedList<MockReplayable>();
-		replaySequence.add(replayable1);
-		replaySequence.add(replayable2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		
-		fixture.addReplaySequence(replaySequence);		
-		
-		assertEquals(2, fixture.replayEvents.size());
-		assertEquals(replayable1, fixture.replayEvents.get(0));
-		assertEquals(replayable2, fixture.replayEvents.get(1));
-	}
-
-	@Test(expected = java.security.InvalidParameterException.class )
-	public void testAddReplaySequence_2() throws Exception {
-		String type = "typeString";
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		
-		fixture.addReplaySequence(null);	
-	}
-
-	@Test
-	public void testEquals_1() throws Exception {
-		String type = "typeString";
-		boolean replayValid = true;
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replayableTarget1 = "replayTargetString1";
-		String replayableTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replayableTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replayableTarget2);
-		List<MockReplayable> replaySequence = new LinkedList<MockReplayable>();
-		replaySequence.add(replayable1);
-		replaySequence.add(replayable2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayEvents = replaySequence;
-		fixture.replayValid = replayValid;
-		
-		String typeOther = "typeString";
-		boolean replayValidOther = true;
-		String replayableReplayOther1 = "replayString1";
-		String replayableReplayOther2 = "replayString2";
-		String replaybleTargetOther1 = "replayTargetString1";
-		String replaybleTargetOther2 = "replayTargetString2";
-		MockReplayable replayableOther1 = new MockReplayable(replayableReplayOther1,
-				replaybleTargetOther1);
-		MockReplayable replayableOther2 = new MockReplayable(replayableReplayOther2, replaybleTargetOther2);
-		List<MockReplayable> replaySequenceOther = new LinkedList<MockReplayable>();
-		replaySequenceOther.add(replayableOther1);
-		replaySequenceOther.add(replayableOther2);
-		ReplayableEvent<MockReplayable> other = new ReplayableEvent<MockReplayable>(
-				typeOther);
-		other.replayEvents = replaySequenceOther;
-		other.replayValid = replayValidOther;
-
-		boolean result = fixture.equals(other);
-
-		assertEquals(true, result);
-	}
-	
-	@Test
-	public void testEquals_2() throws Exception {
-		String type = "typeString";
-		boolean replayValid = true;
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replayableTarget1 = "replayTargetString1";
-		String replayableTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replayableTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replayableTarget2);
-		List<MockReplayable> replaySequence = new LinkedList<MockReplayable>();
-		replaySequence.add(replayable1);
-		replaySequence.add(replayable2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayEvents = replaySequence;
-		fixture.replayValid = replayValid;
-		
-		String typeOther = "typeString2";
-		boolean replayValidOther = true;
-		String replayableReplayOther1 = "replayString1";
-		String replayableReplayOther2 = "replayString2";
-		String replaybleTargetOther1 = "replayTargetString1";
-		String replaybleTargetOther2 = "replayTargetString2";
-		MockReplayable replayableOther1 = new MockReplayable(replayableReplayOther1,
-				replaybleTargetOther1);
-		MockReplayable replayableOther2 = new MockReplayable(replayableReplayOther2, replaybleTargetOther2);
-		List<MockReplayable> replaySequenceOther = new LinkedList<MockReplayable>();
-		replaySequenceOther.add(replayableOther1);
-		replaySequenceOther.add(replayableOther2);
-		ReplayableEvent<MockReplayable> other = new ReplayableEvent<MockReplayable>(
-				typeOther);
-		other.replayEvents = replaySequenceOther;
-		other.replayValid = replayValidOther;
-
-		boolean result = fixture.equals(other);
-
-		assertEquals(false, result);
-	}
-	
-	@Test
-	public void testEquals_3() throws Exception {
-		String type = "typeString";
-		boolean replayValid = true;
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replayableTarget1 = "replayTargetString1";
-		String replayableTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replayableTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replayableTarget2);
-		List<MockReplayable> replaySequence = new LinkedList<MockReplayable>();
-		replaySequence.add(replayable1);
-		replaySequence.add(replayable2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayEvents = replaySequence;
-		fixture.replayValid = replayValid;
-		
-		String typeOther = "typeString";
-		boolean replayValidOther = true;
-		String replayableReplayOther1 = "replayString3";
-		String replayableReplayOther2 = "replayString2";
-		String replaybleTargetOther1 = "replayTargetString1";
-		String replaybleTargetOther2 = "replayTargetString2";
-		MockReplayable replayableOther1 = new MockReplayable(replayableReplayOther1,
-				replaybleTargetOther1);
-		MockReplayable replayableOther2 = new MockReplayable(replayableReplayOther2, replaybleTargetOther2);
-		List<MockReplayable> replaySequenceOther = new LinkedList<MockReplayable>();
-		replaySequenceOther.add(replayableOther1);
-		replaySequenceOther.add(replayableOther2);
-		ReplayableEvent<MockReplayable> other = new ReplayableEvent<MockReplayable>(
-				typeOther);
-		other.replayEvents = replaySequenceOther;
-		other.replayValid = replayValidOther;
-
-		boolean result = fixture.equals(other);
-
-		assertEquals(true, result);
-	}
-	
-	@Test
-	public void testEquals_4() throws Exception {
-		String type = "typeString";
-		boolean replayValid = true;
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replayableTarget1 = "replayTargetString1";
-		String replayableTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replayableTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replayableTarget2);
-		List<MockReplayable> replaySequence = new LinkedList<MockReplayable>();
-		replaySequence.add(replayable1);
-		replaySequence.add(replayable2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayEvents = replaySequence;
-		fixture.replayValid = replayValid;
-		
-		String typeOther = "typeString";
-		boolean replayValidOther = true;
-		String replayableReplayOther1 = "replayString1";
-		String replayableReplayOther2 = "replayString3";
-		String replaybleTargetOther1 = "replayTargetString1";
-		String replaybleTargetOther2 = "replayTargetString2";
-		MockReplayable replayableOther1 = new MockReplayable(replayableReplayOther1,
-				replaybleTargetOther1);
-		MockReplayable replayableOther2 = new MockReplayable(replayableReplayOther2, replaybleTargetOther2);
-		List<MockReplayable> replaySequenceOther = new LinkedList<MockReplayable>();
-		replaySequenceOther.add(replayableOther1);
-		replaySequenceOther.add(replayableOther2);
-		ReplayableEvent<MockReplayable> other = new ReplayableEvent<MockReplayable>(
-				typeOther);
-		other.replayEvents = replaySequenceOther;
-		other.replayValid = replayValidOther;
-
-		boolean result = fixture.equals(other);
-
-		assertEquals(true, result);
-	}
-	
-	@Test
-	public void testEquals_5() throws Exception {
-		String type = "typeString";
-		boolean replayValid = true;
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replayableTarget1 = "replayTargetString1";
-		String replayableTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replayableTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replayableTarget2);
-		List<MockReplayable> replaySequence = new LinkedList<MockReplayable>();
-		replaySequence.add(replayable1);
-		replaySequence.add(replayable2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayEvents = replaySequence;
-		fixture.replayValid = replayValid;
-		
-		String typeOther = "typeString";
-		boolean replayValidOther = false;
-		String replayableReplayOther1 = "replayString1";
-		String replayableReplayOther2 = "replayString2";
-		String replaybleTargetOther1 = "replayTargetString1";
-		String replaybleTargetOther2 = "replayTargetString2";
-		MockReplayable replayableOther1 = new MockReplayable(replayableReplayOther1,
-				replaybleTargetOther1);
-		MockReplayable replayableOther2 = new MockReplayable(replayableReplayOther2, replaybleTargetOther2);
-		List<MockReplayable> replaySequenceOther = new LinkedList<MockReplayable>();
-		replaySequenceOther.add(replayableOther1);
-		replaySequenceOther.add(replayableOther2);
-		ReplayableEvent<MockReplayable> other = new ReplayableEvent<MockReplayable>(
-				typeOther);
-		other.replayEvents = replaySequenceOther;
-		other.replayValid = replayValidOther;
-
-		boolean result = fixture.equals(other);
-
-		assertEquals(true, result);
-	}
-	
-	@Test
-	public void testEquals_6() throws Exception {
-		String type = "typeString";
-		boolean replayValid = true;
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replayableTarget1 = "replayTargetString1";
-		String replayableTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replayableTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replayableTarget2);
-		List<MockReplayable> replaySequence = new LinkedList<MockReplayable>();
-		replaySequence.add(replayable1);
-		replaySequence.add(replayable2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayEvents = replaySequence;
-		fixture.replayValid = replayValid;
-
-		boolean result = fixture.equals(fixture);
-
-		assertEquals(true, result);
-	}
-
-	@Test
-	public void testGetReplayDecorator_1() throws Exception {
-		String type = "typeString";
-		StubReplayDecorator decorator = new StubReplayDecorator();
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.decorator = decorator; 
-
-		IReplayDecorator result = fixture.getReplayDecorator();
-
-		assertEquals(decorator, result);
-	}
-
-	@Test
-	public void testGetReplayMessages_1() throws Exception {
-		String type = "typeString";
-		String replayableReplay1 = "replayString1";
-		String replayableReplay2 = "replayString2";
-		String replayableTarget1 = "replayTargetString1";
-		String replayableTarget2 = "replayTargetString2";
-		MockReplayable replayable1 = new MockReplayable(replayableReplay1,
-				replayableTarget1);
-		MockReplayable replayable2 = new MockReplayable(replayableReplay2, replayableTarget2);
-		List<MockReplayable> replaySequence = new LinkedList<MockReplayable>();
-		replaySequence.add(replayable1);
-		replaySequence.add(replayable2);
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayEvents = replaySequence;
-
-		List<MockReplayable> result = fixture.getReplayMessages();
-
-		ListAssert.assertEquals(replaySequence, result);
-	}
-
-	@Test
-	public void testHasValidReplay_1() throws Exception {
-		String type = "typeString";
-		boolean replayValid = true;
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayValid = replayValid;
-
-		boolean result = fixture.hasValidReplay();
-
-		assertEquals(replayValid, result);
-	}
-	
-	@Test
-	public void testHasValidReplay_2() throws Exception {
-		String type = "typeString";
-		boolean replayValid = false;
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		fixture.replayValid = replayValid;
-
-		boolean result = fixture.hasValidReplay();
-
-		assertEquals(replayValid, result);
-	}
-
-	@Test
-	public void testInvalidateReplay_1() throws Exception {
-		String type = "typeString";
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		
-		fixture.invalidateReplay();
-
-		assertFalse(fixture.replayValid);
-	}
-	
-	@Test
-	public void testInvalidateReplay_2() throws Exception {
-		String type = "typeString";
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-		
-		fixture.invalidateReplay();
-		fixture.invalidateReplay();
-
-		assertFalse(fixture.replayValid);
-	}
-
-	@Test
-	public void testSetDecorator_fixture_1() throws Exception {
-		String type = "typeString";
-		StubReplayDecorator decorator = new StubReplayDecorator();
-		ReplayableEvent<MockReplayable> fixture = new ReplayableEvent<MockReplayable>(
-				type);
-
-		fixture.setDecorator(decorator);
-
-		assertEquals(decorator, fixture.decorator);
-	}
-
-	public static void main(String[] args) {
-		new org.junit.runner.JUnitCore().run(ReplayableEventTest.class);
-	}
-}
Index: /trunk/quest-core-events/.classpath
===================================================================
--- /trunk/quest-core-events/.classpath	(revision 547)
+++ /trunk/quest-core-events/.classpath	(revision 548)
@@ -2,4 +2,10 @@
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 		<attributes>
 			<attribute name="optional" value="true"/>
Index: /trunk/quest-core-tasktrees/.classpath
===================================================================
--- /trunk/quest-core-tasktrees/.classpath	(revision 547)
+++ /trunk/quest-core-tasktrees/.classpath	(revision 548)
@@ -2,4 +2,10 @@
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 		<attributes>
 			<attribute name="optional" value="true"/>
Index: /trunk/quest-core-testgeneration/.classpath
===================================================================
--- /trunk/quest-core-testgeneration/.classpath	(revision 547)
+++ /trunk/quest-core-testgeneration/.classpath	(revision 548)
@@ -2,4 +2,10 @@
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 		<attributes>
 			<attribute name="optional" value="true"/>
Index: /trunk/quest-core-usability/.classpath
===================================================================
--- /trunk/quest-core-usability/.classpath	(revision 547)
+++ /trunk/quest-core-usability/.classpath	(revision 548)
@@ -1,7 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src/main/java"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-	<classpathentry kind="src" path="target/generated-sources/xjc"/>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry including="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry including="**/*.java" kind="src" output="target/classes" path="target/generated-sources/xjc">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
 		<attributes>
Index: /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/DeterministicFiniteAutomatonTest.java
===================================================================
--- /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/DeterministicFiniteAutomatonTest.java	(revision 547)
+++ /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/DeterministicFiniteAutomatonTest.java	(revision 548)
@@ -7,4 +7,5 @@
 import de.ugoe.cs.quest.eventcore.Event;
 import de.ugoe.cs.quest.usageprofiles.DeterministicFiniteAutomaton;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 
 import java.util.Random;
@@ -22,5 +23,5 @@
 public class DeterministicFiniteAutomatonTest {
 
-	Collection<List<? extends Event<?>>> sequences;
+	Collection<List<Event>> sequences;
 
 	@Test
@@ -46,9 +47,9 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = new ArrayList<Event<String>>();
-		context.add(new Event<String>("a"));
-		context.add(new Event<String>("b"));
+		List<Event> context = new ArrayList<Event>();
+		context.add(new Event(new StringEventType("a")));
+		context.add(new Event(new StringEventType("b")));
 
-		Event<String> symbol = new Event<String>("r");
+		Event symbol = new Event(new StringEventType("r"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -63,8 +64,8 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = new ArrayList<Event<String>>();
-		context.add(new Event<String>("a"));
+		List<Event> context = new ArrayList<Event>();
+		context.add(new Event(new StringEventType("a")));
 
-		Event<String> symbol = new Event<String>("b");
+		Event symbol = new Event(new StringEventType("b"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -79,8 +80,8 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = new ArrayList<Event<String>>();
-		context.add(new Event<String>("a"));
+		List<Event> context = new ArrayList<Event>();
+		context.add(new Event(new StringEventType("a")));
 
-		Event<String> symbol = new Event<String>("c");
+		Event symbol = new Event(new StringEventType("c"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -95,8 +96,8 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = new ArrayList<Event<String>>();
-		context.add(new Event<String>("a"));
+		List<Event> context = new ArrayList<Event>();
+		context.add(new Event(new StringEventType("a")));
 
-		Event<String> symbol = new Event<String>("e");
+		Event symbol = new Event(new StringEventType("e"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -111,8 +112,8 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = new ArrayList<Event<String>>();
-		context.add(new Event<String>("a"));
+		List<Event> context = new ArrayList<Event>();
+		context.add(new Event(new StringEventType("a")));
 
-		Event<String> symbol = null;
+		Event symbol = null;
 
 		fixture.getProbability(context, symbol);
@@ -125,7 +126,7 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = null;
+		List<Event> context = null;
 
-		Event<String> symbol = new Event<String>("a");
+		Event symbol = new Event(new StringEventType("a"));
 
 		fixture.getProbability(context, symbol);
@@ -134,18 +135,18 @@
 	@Before
 	public void setUp() throws Exception {
-		List<Event<?>> sequence = new ArrayList<Event<?>>();
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("c"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("d"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
+		List<Event> sequence = new ArrayList<Event>();
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("c")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("d")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
 
-		sequences = new ArrayList<List<? extends Event<?>>>();
+		sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 	}
Index: /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/FirstOrderMarkovModelTest.java
===================================================================
--- /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/FirstOrderMarkovModelTest.java	(revision 547)
+++ /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/FirstOrderMarkovModelTest.java	(revision 548)
@@ -10,4 +10,5 @@
 import de.ugoe.cs.quest.usageprofiles.FirstOrderMarkovModel;
 import de.ugoe.cs.quest.usageprofiles.FirstOrderMarkovModel.MarkovEdge;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 import static org.junit.Assert.*;
 
@@ -21,5 +22,5 @@
 public class FirstOrderMarkovModelTest {
 
-	Collection<List<? extends Event<?>>> sequences;
+	Collection<List<Event>> sequences;
 	
 	@Test
@@ -72,18 +73,18 @@
 	@Before
 	public void setUp() throws Exception {
-		List<Event<?>> sequence = new ArrayList<Event<?>>();
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("c"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("d"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
+		List<Event> sequence = new ArrayList<Event>();
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("c")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("d")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
 
-		sequences = new ArrayList<List<? extends Event<?>>>();
+		sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 	}
Index: /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/HighOrderMarkovModelTest.java
===================================================================
--- /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/HighOrderMarkovModelTest.java	(revision 547)
+++ /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/HighOrderMarkovModelTest.java	(revision 548)
@@ -7,4 +7,5 @@
 import de.ugoe.cs.quest.eventcore.Event;
 import de.ugoe.cs.quest.usageprofiles.HighOrderMarkovModel;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 
 import java.util.Random;
@@ -22,5 +23,5 @@
 public class HighOrderMarkovModelTest {
 
-	Collection<List<? extends Event<?>>> sequences;
+	Collection<List<Event>> sequences;
 
 	@Test
@@ -71,8 +72,8 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = new ArrayList<Event<String>>();
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("b");
+		List<Event> context = new ArrayList<Event>();
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("b"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -88,8 +89,8 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = new ArrayList<Event<String>>();
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("r");
+		List<Event> context = new ArrayList<Event>();
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("r"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -105,8 +106,8 @@
 		fixture.train(sequences);
 
-		List<Event<String>> context = new ArrayList<Event<String>>();
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("c");
+		List<Event> context = new ArrayList<Event>();
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("c"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -122,9 +123,9 @@
 		fixture.train(sequences);
 
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("b");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("b"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -140,9 +141,9 @@
 		fixture.train(sequences);
 
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("b");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("b"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -158,9 +159,9 @@
 		fixture.train(sequences);
 
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("b"));
-
-		Event<String> symbol = new Event<String>("b");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("b")));
+
+		Event symbol = new Event(new StringEventType("b"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -176,9 +177,9 @@
 		fixture.train(sequences);
 
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("b"));
-
-		Event<String> symbol = new Event<String>("a");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("b")));
+
+		Event symbol = new Event(new StringEventType("a"));
 
 		double result = fixture.getProbability(context, symbol);
@@ -194,9 +195,9 @@
 		fixture.train(sequences);
 
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("b"));
-
-		Event<String> symbol = null;
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("b")));
+
+		Event symbol = null;
 
 		fixture.getProbability(context, symbol);
@@ -210,7 +211,7 @@
 		fixture.train(sequences);
 
-		List<Event<?>> context = null;
-
-		Event<String> symbol = new Event<String>("b");
+		List<Event> context = null;
+
+		Event symbol = new Event(new StringEventType("b"));
 
 		fixture.getProbability(context, symbol);
@@ -219,18 +220,18 @@
 	@Before
 	public void setUp() throws Exception {
-		List<Event<?>> sequence = new ArrayList<Event<?>>();
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("c"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("d"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-
-		sequences = new ArrayList<List<? extends Event<?>>>();
+		List<Event> sequence = new ArrayList<Event>();
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("c")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("d")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
+
+		sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 	}
Index: /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/MockTrieBasedModel.java
===================================================================
--- /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/MockTrieBasedModel.java	(revision 547)
+++ /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/MockTrieBasedModel.java	(revision 548)
@@ -16,7 +16,7 @@
 
 	@Override
-	public double getProbability(List<? extends Event<?>> context,
-			Event<?> symbol) {
-		List<Event<?>> list = new ArrayList<Event<?>>();
+	public double getProbability(List<Event> context,
+			Event symbol) {
+		List<Event> list = new ArrayList<Event>();
 		if( context.isEmpty() ) {
 			return 2;
Index: /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/ModelFlattenerTest.java
===================================================================
--- /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/ModelFlattenerTest.java	(revision 547)
+++ /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/ModelFlattenerTest.java	(revision 548)
@@ -1,2 +1,3 @@
+
 package de.ugoe.cs.quest.usageprofiles;
 
@@ -14,135 +15,135 @@
 import de.ugoe.cs.quest.usageprofiles.PredictionByPartialMatch;
 import de.ugoe.cs.quest.usageprofiles.TrieNode;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 import static org.junit.Assert.*;
 
 /**
- * The class <code>ModelFlattenerTest</code> contains tests for the class <code>{@link ModelFlattener}</code>.
- *
+ * The class <code>ModelFlattenerTest</code> contains tests for the class
+ * <code>{@link ModelFlattener}</code>.
+ * 
  * @author Steffen Herbold
  * @version 1.0
  */
 public class ModelFlattenerTest {
-	
-	List<Event<?>> sequence;
-	
-	private static void assertCollectionContent(Collection<?> c1, Collection<?> c2) {
-		assertEquals(c1.size(), c2.size());
-		for( Object obj : c1 ) {
-			assertTrue(c2.contains(obj));
-		}
-	}
-	
-	@Test
-	public void testFlattenHighOrderMarkovModel_1()
-		throws Exception {
-		ModelFlattener fixture = new ModelFlattener();
-		HighOrderMarkovModel model = new HighOrderMarkovModel(2, new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
-		sequences.add(sequence);
-		model.train(sequences);
-		
-		Collection<Event<?>> expectedSymbols = new HashSet<Event<?>>();
-		expectedSymbols.add(new Event<Object>("a-=-END"));
-		expectedSymbols.add(new Event<Object>("a-=-b"));
-		expectedSymbols.add(new Event<Object>("a-=-c"));
-		expectedSymbols.add(new Event<Object>("a-=-d"));
-		expectedSymbols.add(new Event<Object>("b-=-r"));
-		expectedSymbols.add(new Event<Object>("c-=-a"));
-		expectedSymbols.add(new Event<Object>("d-=-a"));
-		expectedSymbols.add(new Event<Object>("r-=-a"));
-		expectedSymbols.add(new Event<Object>("START-=-a"));
 
-		FirstOrderMarkovModel result = fixture.flattenHighOrderMarkovModel(model);
-		
-		assertCollectionContent(expectedSymbols, result.getEvents());
-		
-		TrieNode<Event<?>> root = result.trie.find(null);
-		TrieNode<Event<?>> root_aEnd = root.getChild(new Event<Object>("a-=-END"));
-		TrieNode<Event<?>> root_ab = root.getChild(new Event<Object>("a-=-b"));
-		TrieNode<Event<?>> root_ab_br = root_ab.getChild(new Event<Object>("b-=-r"));
-		TrieNode<Event<?>> root_ac = root.getChild(new Event<Object>("a-=-c"));
-		TrieNode<Event<?>> root_ac_ca = root_ac.getChild(new Event<Object>("c-=-a"));
-		TrieNode<Event<?>> root_ad = root.getChild(new Event<Object>("a-=-d"));
-		TrieNode<Event<?>> root_ad_da = root_ad.getChild(new Event<Object>("d-=-a"));
-		TrieNode<Event<?>> root_br = root.getChild(new Event<Object>("b-=-r"));
-		TrieNode<Event<?>> root_br_ra = root_br.getChild(new Event<Object>("r-=-a"));
-		TrieNode<Event<?>> root_ca = root.getChild(new Event<Object>("c-=-a"));
-		TrieNode<Event<?>> root_ca_ad = root_ca.getChild(new Event<Object>("a-=-d"));
-		TrieNode<Event<?>> root_da = root.getChild(new Event<Object>("d-=-a"));
-		TrieNode<Event<?>> root_da_ab = root_da.getChild(new Event<Object>("a-=-b"));
-		TrieNode<Event<?>> root_ra = root.getChild(new Event<Object>("r-=-a"));
-		TrieNode<Event<?>> root_ra_ac = root_ra.getChild(new Event<Object> ("a-=-c"));
-		TrieNode<Event<?>> root_ra_aEnd = root_ra.getChild(new Event<Object>("a-=-END"));
-		TrieNode<Event<?>> root_startA = root.getChild(new Event<Object>("START-=-a"));
-		TrieNode<Event<?>> root_startA_ab = root_startA.getChild(new Event<Object>("a-=-b"));
-		
-		assertEquals(1, root_aEnd.getCount());
-		assertTrue(root_aEnd.isLeaf());
-		assertEquals(2, root_ab.getCount());
-		assertEquals(1, root_ab.getChildren().size());
-		assertEquals(2, root_ab_br.getCount());
-		assertTrue(root_ab_br.isLeaf());
-		assertEquals(1, root_ac.getCount());
-		assertEquals(1, root_ac.getChildren().size());
-		assertEquals(1, root_ac_ca.getCount());
-		assertTrue(root_ac_ca.isLeaf());
-		assertEquals(1, root_ad.getCount());
-		assertEquals(1, root_ad.getChildren().size());
-		assertEquals(1, root_ad_da.getCount());
-		assertTrue(root_ad_da.isLeaf());
-		assertEquals(2, root_br.getCount());
-		assertEquals(1, root_br.getChildren().size());
-		assertEquals(2, root_br_ra.getCount());
-		assertTrue(root_br_ra.isLeaf());
-		assertEquals(1, root_ca.getCount());
-		assertEquals(1, root_ca.getChildren().size());
-		assertEquals(1, root_ca_ad.getCount());
-		assertTrue(root_ca_ad.isLeaf());
-		assertEquals(1, root_da.getCount());
-		assertEquals(1, root_da.getChildren().size());
-		assertEquals(1, root_da_ab.getCount());
-		assertTrue(root_da_ab.isLeaf());
-		assertEquals(2, root_ra.getCount());
-		assertEquals(2, root_ra.getChildren().size());
-		assertEquals(1, root_ra_ac.getCount());
-		assertTrue(root_ra_ac.isLeaf());
-		assertEquals(1, root_ra_aEnd.getCount());
-		assertTrue(root_ra_aEnd.isLeaf());
-		assertEquals(1, root_startA.getCount());
-		assertEquals(1, root_startA.getChildren().size());
-		assertEquals(1, root_startA_ab.getCount());
-		assertTrue(root_startA_ab.isLeaf());		
-	}
+    List<Event> sequence;
 
-	@Test
-	public void testFlattenPredictionByPartialMatch_1()
-		throws Exception {
-		ModelFlattener fixture = new ModelFlattener();
-		PredictionByPartialMatch model = new PredictionByPartialMatch(1, new Random());
+    private static void assertCollectionContent(Collection<?> c1, Collection<?> c2) {
+        assertEquals(c1.size(), c2.size());
+        for (Object obj : c1) {
+            assertTrue(c2.contains(obj));
+        }
+    }
 
-		FirstOrderMarkovModel result = fixture.flattenPredictionByPartialMatch(model);
-		
-		assertEquals(null, result);
-	}
+    @Test
+    public void testFlattenHighOrderMarkovModel_1() throws Exception {
+        ModelFlattener fixture = new ModelFlattener();
+        HighOrderMarkovModel model = new HighOrderMarkovModel(2, new Random());
+        Collection<List<Event>> sequences = new ArrayList<List<Event>>();
+        sequences.add(sequence);
+        model.train(sequences);
 
-	@Before
-	public void setUp()
-		throws Exception {
-		sequence = new ArrayList<Event<?>>();
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("c"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("d"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-	}
+        Collection<Event> expectedSymbols = new HashSet<Event>();
+        expectedSymbols.add(new Event(new StringEventType("a-=-END")));
+        expectedSymbols.add(new Event(new StringEventType("a-=-b")));
+        expectedSymbols.add(new Event(new StringEventType("a-=-c")));
+        expectedSymbols.add(new Event(new StringEventType("a-=-d")));
+        expectedSymbols.add(new Event(new StringEventType("b-=-r")));
+        expectedSymbols.add(new Event(new StringEventType("c-=-a")));
+        expectedSymbols.add(new Event(new StringEventType("d-=-a")));
+        expectedSymbols.add(new Event(new StringEventType("r-=-a")));
+        expectedSymbols.add(new Event(new StringEventType("START-=-a")));
 
-	public static void main(String[] args) {
-		new org.junit.runner.JUnitCore().run(ModelFlattenerTest.class);
-	}
+        FirstOrderMarkovModel result = fixture.flattenHighOrderMarkovModel(model);
+
+        assertCollectionContent(expectedSymbols, result.getEvents());
+
+        TrieNode<Event> root = result.trie.find(null);
+        TrieNode<Event> root_aEnd = root.getChild(new Event(new StringEventType("a-=-END")));
+        TrieNode<Event> root_ab = root.getChild(new Event(new StringEventType("a-=-b")));
+        TrieNode<Event> root_ab_br = root_ab.getChild(new Event(new StringEventType("b-=-r")));
+        TrieNode<Event> root_ac = root.getChild(new Event(new StringEventType("a-=-c")));
+        TrieNode<Event> root_ac_ca = root_ac.getChild(new Event(new StringEventType("c-=-a")));
+        TrieNode<Event> root_ad = root.getChild(new Event(new StringEventType("a-=-d")));
+        TrieNode<Event> root_ad_da = root_ad.getChild(new Event(new StringEventType("d-=-a")));
+        TrieNode<Event> root_br = root.getChild(new Event(new StringEventType("b-=-r")));
+        TrieNode<Event> root_br_ra = root_br.getChild(new Event(new StringEventType("r-=-a")));
+        TrieNode<Event> root_ca = root.getChild(new Event(new StringEventType("c-=-a")));
+        TrieNode<Event> root_ca_ad = root_ca.getChild(new Event(new StringEventType("a-=-d")));
+        TrieNode<Event> root_da = root.getChild(new Event(new StringEventType("d-=-a")));
+        TrieNode<Event> root_da_ab = root_da.getChild(new Event(new StringEventType("a-=-b")));
+        TrieNode<Event> root_ra = root.getChild(new Event(new StringEventType("r-=-a")));
+        TrieNode<Event> root_ra_ac = root_ra.getChild(new Event(new StringEventType("a-=-c")));
+        TrieNode<Event> root_ra_aEnd = root_ra.getChild(new Event(new StringEventType("a-=-END")));
+        TrieNode<Event> root_startA = root.getChild(new Event(new StringEventType("START-=-a")));
+        TrieNode<Event> root_startA_ab =
+            root_startA.getChild(new Event(new StringEventType("a-=-b")));
+
+        assertEquals(1, root_aEnd.getCount());
+        assertTrue(root_aEnd.isLeaf());
+        assertEquals(2, root_ab.getCount());
+        assertEquals(1, root_ab.getChildren().size());
+        assertEquals(2, root_ab_br.getCount());
+        assertTrue(root_ab_br.isLeaf());
+        assertEquals(1, root_ac.getCount());
+        assertEquals(1, root_ac.getChildren().size());
+        assertEquals(1, root_ac_ca.getCount());
+        assertTrue(root_ac_ca.isLeaf());
+        assertEquals(1, root_ad.getCount());
+        assertEquals(1, root_ad.getChildren().size());
+        assertEquals(1, root_ad_da.getCount());
+        assertTrue(root_ad_da.isLeaf());
+        assertEquals(2, root_br.getCount());
+        assertEquals(1, root_br.getChildren().size());
+        assertEquals(2, root_br_ra.getCount());
+        assertTrue(root_br_ra.isLeaf());
+        assertEquals(1, root_ca.getCount());
+        assertEquals(1, root_ca.getChildren().size());
+        assertEquals(1, root_ca_ad.getCount());
+        assertTrue(root_ca_ad.isLeaf());
+        assertEquals(1, root_da.getCount());
+        assertEquals(1, root_da.getChildren().size());
+        assertEquals(1, root_da_ab.getCount());
+        assertTrue(root_da_ab.isLeaf());
+        assertEquals(2, root_ra.getCount());
+        assertEquals(2, root_ra.getChildren().size());
+        assertEquals(1, root_ra_ac.getCount());
+        assertTrue(root_ra_ac.isLeaf());
+        assertEquals(1, root_ra_aEnd.getCount());
+        assertTrue(root_ra_aEnd.isLeaf());
+        assertEquals(1, root_startA.getCount());
+        assertEquals(1, root_startA.getChildren().size());
+        assertEquals(1, root_startA_ab.getCount());
+        assertTrue(root_startA_ab.isLeaf());
+    }
+
+    @Test
+    public void testFlattenPredictionByPartialMatch_1() throws Exception {
+        ModelFlattener fixture = new ModelFlattener();
+        PredictionByPartialMatch model = new PredictionByPartialMatch(1, new Random());
+
+        FirstOrderMarkovModel result = fixture.flattenPredictionByPartialMatch(model);
+
+        assertEquals(null, result);
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        sequence = new ArrayList<Event>();
+        sequence.add(new Event(new StringEventType("a")));
+        sequence.add(new Event(new StringEventType("b")));
+        sequence.add(new Event(new StringEventType("r")));
+        sequence.add(new Event(new StringEventType("a")));
+        sequence.add(new Event(new StringEventType("c")));
+        sequence.add(new Event(new StringEventType("a")));
+        sequence.add(new Event(new StringEventType("d")));
+        sequence.add(new Event(new StringEventType("a")));
+        sequence.add(new Event(new StringEventType("b")));
+        sequence.add(new Event(new StringEventType("r")));
+        sequence.add(new Event(new StringEventType("a")));
+    }
+
+    public static void main(String[] args) {
+        new org.junit.runner.JUnitCore().run(ModelFlattenerTest.class);
+    }
 }
Index: /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/PredictionByPartialMatchTest.java
===================================================================
--- /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/PredictionByPartialMatchTest.java	(revision 547)
+++ /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/PredictionByPartialMatchTest.java	(revision 548)
@@ -7,4 +7,5 @@
 import de.ugoe.cs.quest.eventcore.Event;
 import de.ugoe.cs.quest.usageprofiles.PredictionByPartialMatch;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 
 import java.util.Random;
@@ -22,5 +23,5 @@
 public class PredictionByPartialMatchTest {
 
-	Collection<List<? extends Event<?>>> sequences;
+	Collection<List<Event>> sequences;
 
 	@Test
@@ -209,9 +210,9 @@
 		fixture.train(sequences);
 		
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("b");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("b"));
 		
 		double result = fixture.getProbability(context, symbol);
@@ -230,9 +231,9 @@
 		fixture.train(sequences);
 		
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("c");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("c"));
 		
 		double result = fixture.getProbability(context, symbol);
@@ -251,9 +252,9 @@
 		fixture.train(sequences);
 		
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("b");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("b"));
 		
 		double result = fixture.getProbability(context, symbol);
@@ -272,9 +273,9 @@
 		fixture.train(sequences);
 		
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("c");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("c"));
 		
 		double result = fixture.getProbability(context, symbol);
@@ -293,9 +294,9 @@
 		fixture.train(sequences);
 		
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("b");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("b"));
 		
 		double result = fixture.getProbability(context, symbol);
@@ -314,9 +315,9 @@
 		fixture.train(sequences);
 		
-		List<Event<?>> context = new ArrayList<Event<?>>();
-		context.add(Event.STARTEVENT);
-		context.add(new Event<String>("a"));
-
-		Event<String> symbol = new Event<String>("c");
+		List<Event> context = new ArrayList<Event>();
+		context.add(Event.STARTEVENT);
+		context.add(new Event(new StringEventType("a")));
+
+		Event symbol = new Event(new StringEventType("c"));
 		
 		double result = fixture.getProbability(context, symbol);
@@ -342,18 +343,18 @@
 	@Before
 	public void setUp() throws Exception {
-		List<Event<?>> sequence = new ArrayList<Event<?>>();
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("c"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("d"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-
-		sequences = new ArrayList<List<? extends Event<?>>>();
+		List<Event> sequence = new ArrayList<Event>();
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("c")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("d")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
+
+		sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 	}
Index: /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/TrieBasedModelTest.java
===================================================================
--- /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/TrieBasedModelTest.java	(revision 547)
+++ /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/TrieBasedModelTest.java	(revision 548)
@@ -11,4 +11,5 @@
 import de.ugoe.cs.quest.usageprofiles.TrieBasedModel;
 import de.ugoe.cs.quest.usageprofiles.TrieNode;
+import de.ugoe.cs.quest.usageprofiles.mock.StringEventType;
 
 import org.junit.*;
@@ -24,131 +25,131 @@
 public class TrieBasedModelTest {
 
-	List<Event<?>> sequence;
-	Collection<Event<?>> symbols;
-
-	private void assertTrieStructure(Trie<Event<?>> trie, int numSequences) {
-		TrieNode<Event<?>> root = trie.find(null);
-		TrieNode<Event<?>> root_a = root.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_a_a = root_a.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_a_b = root_a.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_a_b_a = root_a_b
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_a_b_b = root_a_b
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_a_b_c = root_a_b
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_a_b_d = root_a_b
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_a_b_r = root_a_b
-				.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_a_c = root_a.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_a_c_a = root_a_c
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_a_c_b = root_a_c
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_a_c_c = root_a_c
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_a_c_d = root_a_c
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_a_c_r = root_a_c
-				.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_a_d = root_a.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_a_d_a = root_a_d
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_a_d_b = root_a_d
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_a_d_c = root_a_d
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_a_d_d = root_a_d
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_a_d_r = root_a_d
-				.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_a_r = root_a.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_b = root.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_b_a = root_b.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_b_b = root_b.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_b_c = root_b.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_b_d = root_b.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_b_r = root_b.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_b_r_a = root_b_r
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_b_r_b = root_b_r
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_b_r_c = root_b_r
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_b_r_d = root_b_r
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_b_r_r = root_b_r
-				.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_c = root.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_c_a = root_c.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_c_a_a = root_c_a
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_c_a_b = root_c_a
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_c_a_c = root_c_a
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_c_a_d = root_c_a
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_c_a_r = root_c_a
-				.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_c_b = root_c.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_c_c = root_c.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_c_d = root_c.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_c_r = root_c.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_d = root.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_d_a = root_d.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_d_a_a = root_d_a
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_d_a_b = root_d_a
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_d_a_c = root_d_a
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_d_a_d = root_d_a
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_d_a_r = root_d_a
-				.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_d_b = root_d.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_d_c = root_d.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_d_d = root_d.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_d_r = root_d.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_r = root.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_r_a = root_r.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_r_a_a = root_r_a
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_r_a_b = root_r_a
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_r_a_c = root_r_a
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_r_a_d = root_r_a
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_r_a_r = root_r_a
-				.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_r_a_end = root_r_a.getChild(Event.ENDEVENT);
-		TrieNode<Event<?>> root_r_b = root_r.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_r_c = root_r.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_r_d = root_r.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_r_r = root_r.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_start = root.getChild(Event.STARTEVENT);
-		TrieNode<Event<?>> root_start_a = root_start
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_start_a_a = root_start_a
-				.getChild(new Event<String>("a"));
-		TrieNode<Event<?>> root_start_a_b = root_start_a
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_start_a_c = root_start_a
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_start_a_d = root_start_a
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_start_a_r = root_start_a
-				.getChild(new Event<String>("r"));
-		TrieNode<Event<?>> root_start_b = root_start
-				.getChild(new Event<String>("b"));
-		TrieNode<Event<?>> root_start_c = root_start
-				.getChild(new Event<String>("c"));
-		TrieNode<Event<?>> root_start_d = root_start
-				.getChild(new Event<String>("d"));
-		TrieNode<Event<?>> root_start_r = root_start
-				.getChild(new Event<String>("r"));
+	List<Event> sequence;
+	Collection<Event> symbols;
+
+	private void assertTrieStructure(Trie<Event> trie, int numSequences) {
+		TrieNode<Event> root = trie.find(null);
+		TrieNode<Event> root_a = root.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_a_a = root_a.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_a_b = root_a.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_a_b_a = root_a_b
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_a_b_b = root_a_b
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_a_b_c = root_a_b
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_a_b_d = root_a_b
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_a_b_r = root_a_b
+				.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_a_c = root_a.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_a_c_a = root_a_c
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_a_c_b = root_a_c
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_a_c_c = root_a_c
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_a_c_d = root_a_c
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_a_c_r = root_a_c
+				.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_a_d = root_a.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_a_d_a = root_a_d
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_a_d_b = root_a_d
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_a_d_c = root_a_d
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_a_d_d = root_a_d
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_a_d_r = root_a_d
+				.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_a_r = root_a.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_b = root.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_b_a = root_b.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_b_b = root_b.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_b_c = root_b.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_b_d = root_b.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_b_r = root_b.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_b_r_a = root_b_r
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_b_r_b = root_b_r
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_b_r_c = root_b_r
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_b_r_d = root_b_r
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_b_r_r = root_b_r
+				.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_c = root.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_c_a = root_c.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_c_a_a = root_c_a
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_c_a_b = root_c_a
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_c_a_c = root_c_a
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_c_a_d = root_c_a
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_c_a_r = root_c_a
+				.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_c_b = root_c.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_c_c = root_c.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_c_d = root_c.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_c_r = root_c.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_d = root.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_d_a = root_d.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_d_a_a = root_d_a
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_d_a_b = root_d_a
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_d_a_c = root_d_a
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_d_a_d = root_d_a
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_d_a_r = root_d_a
+				.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_d_b = root_d.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_d_c = root_d.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_d_d = root_d.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_d_r = root_d.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_r = root.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_r_a = root_r.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_r_a_a = root_r_a
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_r_a_b = root_r_a
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_r_a_c = root_r_a
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_r_a_d = root_r_a
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_r_a_r = root_r_a
+				.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_r_a_end = root_r_a.getChild(Event.ENDEVENT);
+		TrieNode<Event> root_r_b = root_r.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_r_c = root_r.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_r_d = root_r.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_r_r = root_r.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_start = root.getChild(Event.STARTEVENT);
+		TrieNode<Event> root_start_a = root_start
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_start_a_a = root_start_a
+				.getChild(new Event(new StringEventType("a")));
+		TrieNode<Event> root_start_a_b = root_start_a
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_start_a_c = root_start_a
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_start_a_d = root_start_a
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_start_a_r = root_start_a
+				.getChild(new Event(new StringEventType("r")));
+		TrieNode<Event> root_start_b = root_start
+				.getChild(new Event(new StringEventType("b")));
+		TrieNode<Event> root_start_c = root_start
+				.getChild(new Event(new StringEventType("c")));
+		TrieNode<Event> root_start_d = root_start
+				.getChild(new Event(new StringEventType("d")));
+		TrieNode<Event> root_start_r = root_start
+				.getChild(new Event(new StringEventType("r")));
 
 		assertEquals(numSequences * 5, root_a.getCount());
@@ -287,49 +288,49 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		fixture.train(sequences);
 		int length = 2;
 
-		Collection<List<Event<?>>> expected = new HashSet<List<Event<?>>>();
-		ArrayList<Event<?>> list;
-		list = new ArrayList<Event<?>>();
-		list.add(new Event<String>("a"));
+		Collection<List<Event>> expected = new HashSet<List<Event>>();
+		ArrayList<Event> list;
+		list = new ArrayList<Event>();
+		list.add(new Event(new StringEventType("a")));
 		list.add(Event.ENDEVENT);
 		expected.add(list);
-		list = new ArrayList<Event<?>>();
-		list.add(new Event<String>("a"));
-		list.add(new Event<String>("b"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
-		list.add(new Event<String>("a"));
-		list.add(new Event<String>("c"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
-		list.add(new Event<String>("a"));
-		list.add(new Event<String>("d"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
-		list.add(new Event<String>("b"));
-		list.add(new Event<String>("r"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
-		list.add(new Event<String>("c"));
-		list.add(new Event<String>("a"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
-		list.add(new Event<String>("d"));
-		list.add(new Event<String>("a"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
-		list.add(new Event<String>("r"));
-		list.add(new Event<String>("a"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
+		list = new ArrayList<Event>();
+		list.add(new Event(new StringEventType("a")));
+		list.add(new Event(new StringEventType("b")));
+		expected.add(list);
+		list = new ArrayList<Event>();
+		list.add(new Event(new StringEventType("a")));
+		list.add(new Event(new StringEventType("c")));
+		expected.add(list);
+		list = new ArrayList<Event>();
+		list.add(new Event(new StringEventType("a")));
+		list.add(new Event(new StringEventType("d")));
+		expected.add(list);
+		list = new ArrayList<Event>();
+		list.add(new Event(new StringEventType("b")));
+		list.add(new Event(new StringEventType("r")));
+		expected.add(list);
+		list = new ArrayList<Event>();
+		list.add(new Event(new StringEventType("c")));
+		list.add(new Event(new StringEventType("a")));
+		expected.add(list);
+		list = new ArrayList<Event>();
+		list.add(new Event(new StringEventType("d")));
+		list.add(new Event(new StringEventType("a")));
+		expected.add(list);
+		list = new ArrayList<Event>();
+		list.add(new Event(new StringEventType("r")));
+		list.add(new Event(new StringEventType("a")));
+		expected.add(list);
+		list = new ArrayList<Event>();
 		list.add(Event.STARTEVENT);
-		list.add(new Event<String>("a"));
-		expected.add(list);
-
-		Collection<List<? extends Event<?>>> result = fixture
+		list.add(new Event(new StringEventType("a")));
+		expected.add(list);
+
+		Collection<List<Event>> result = fixture
 				.generateSequences(length);
 
@@ -342,33 +343,33 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		fixture.train(sequences);
 		int length = 3;
 
-		Collection<List<Event<?>>> expected = new HashSet<List<Event<?>>>();
-		ArrayList<Event<?>> list;
-		list = new ArrayList<Event<?>>();
+		Collection<List<Event>> expected = new HashSet<List<Event>>();
+		ArrayList<Event> list;
+		list = new ArrayList<Event>();
 		list.add(Event.STARTEVENT);
-		list.add(new Event<String>("a"));
+		list.add(new Event(new StringEventType("a")));
 		list.add(Event.ENDEVENT);
 		expected.add(list);
-		list = new ArrayList<Event<?>>();
+		list = new ArrayList<Event>();
 		list.add(Event.STARTEVENT);
-		list.add(new Event<String>("a"));
-		list.add(new Event<String>("b"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
+		list.add(new Event(new StringEventType("a")));
+		list.add(new Event(new StringEventType("b")));
+		expected.add(list);
+		list = new ArrayList<Event>();
 		list.add(Event.STARTEVENT);
-		list.add(new Event<String>("a"));
-		list.add(new Event<String>("c"));
-		expected.add(list);
-		list = new ArrayList<Event<?>>();
+		list.add(new Event(new StringEventType("a")));
+		list.add(new Event(new StringEventType("c")));
+		expected.add(list);
+		list = new ArrayList<Event>();
 		list.add(Event.STARTEVENT);
-		list.add(new Event<String>("a"));
-		list.add(new Event<String>("d"));
-		expected.add(list);
-
-		Collection<List<? extends Event<?>>> result = fixture
+		list.add(new Event(new StringEventType("a")));
+		list.add(new Event(new StringEventType("d")));
+		expected.add(list);
+
+		Collection<List<Event>> result = fixture
 				.generateSequences(length, true);
 
@@ -381,5 +382,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		fixture.train(sequences);
@@ -394,27 +395,27 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		fixture.train(sequences);
 		int length = 5;
 
-		Collection<List<Event<?>>> expected = new HashSet<List<Event<?>>>();
-		ArrayList<Event<?>> list;
-		list = new ArrayList<Event<?>>();
+		Collection<List<Event>> expected = new HashSet<List<Event>>();
+		ArrayList<Event> list;
+		list = new ArrayList<Event>();
 		list.add(Event.STARTEVENT);
-		list.add(new Event<String>("a"));
-		list.add(new Event<String>("c"));
-		list.add(new Event<String>("a"));
+		list.add(new Event(new StringEventType("a")));
+		list.add(new Event(new StringEventType("c")));
+		list.add(new Event(new StringEventType("a")));
 		list.add(Event.ENDEVENT);
 		expected.add(list);
-		list = new ArrayList<Event<?>>();
+		list = new ArrayList<Event>();
 		list.add(Event.STARTEVENT);
-		list.add(new Event<String>("a"));
-		list.add(new Event<String>("d"));
-		list.add(new Event<String>("a"));
+		list.add(new Event(new StringEventType("a")));
+		list.add(new Event(new StringEventType("d")));
+		list.add(new Event(new StringEventType("a")));
 		list.add(Event.ENDEVENT);
 		expected.add(list);
 
-		Collection<List<? extends Event<?>>> result = fixture
+		Collection<List<Event>> result = fixture
 				.generateValidSequences(length);
 
@@ -427,5 +428,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		fixture.train(sequences);
@@ -440,10 +441,10 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
-		sequences.add(sequence);
-
-		fixture.train(sequences);
-
-		Collection<? extends Event<?>> result = fixture.getEvents();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
+		sequences.add(sequence);
+
+		fixture.train(sequences);
+
+		Collection<Event> result = fixture.getEvents();
 
 		assertCollectionContent(symbols, result);
@@ -456,7 +457,7 @@
 				new Random());
 
-		Collection<? extends Event<?>> result = fixture.getEvents();
-
-		assertCollectionContent(new HashSet<Event<?>>(), result);
+		Collection<Event> result = fixture.getEvents();
+
+		assertCollectionContent(new HashSet<Event>(), result);
 	}
 
@@ -466,5 +467,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 
@@ -493,5 +494,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		fixture.train(sequences);
@@ -518,5 +519,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		fixture.train(sequences);
@@ -543,5 +544,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 
@@ -558,5 +559,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		sequences.add(sequence);
@@ -574,5 +575,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = null;
+		Collection<List<Event>> sequences = null;
 
 		fixture.train(sequences);
@@ -584,5 +585,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = new ArrayList<List<? extends Event<?>>>();
+		Collection<List<Event>> sequences = new ArrayList<List<Event>>();
 		sequences.add(sequence);
 		fixture.train(sequences);
@@ -599,5 +600,5 @@
 		MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
 				new Random());
-		Collection<List<? extends Event<?>>> sequences = null;
+		Collection<List<Event>> sequences = null;
 		fixture.trie = null;
 
@@ -607,23 +608,23 @@
 	@Before
 	public void setUp() throws Exception {
-		sequence = new ArrayList<Event<?>>();
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("c"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("d"));
-		sequence.add(new Event<String>("a"));
-		sequence.add(new Event<String>("b"));
-		sequence.add(new Event<String>("r"));
-		sequence.add(new Event<String>("a"));
-
-		symbols = new HashSet<Event<?>>();
-		symbols.add(new Event<String>("a"));
-		symbols.add(new Event<String>("b"));
-		symbols.add(new Event<String>("c"));
-		symbols.add(new Event<String>("d"));
-		symbols.add(new Event<String>("r"));
+		sequence = new ArrayList<Event>();
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("c")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("d")));
+		sequence.add(new Event(new StringEventType("a")));
+		sequence.add(new Event(new StringEventType("b")));
+		sequence.add(new Event(new StringEventType("r")));
+		sequence.add(new Event(new StringEventType("a")));
+
+		symbols = new HashSet<Event>();
+		symbols.add(new Event(new StringEventType("a")));
+		symbols.add(new Event(new StringEventType("b")));
+		symbols.add(new Event(new StringEventType("c")));
+		symbols.add(new Event(new StringEventType("d")));
+		symbols.add(new Event(new StringEventType("r")));
 		symbols.add(Event.STARTEVENT);
 		symbols.add(Event.ENDEVENT);
Index: /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/mock/StringEventType.java
===================================================================
--- /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/mock/StringEventType.java	(revision 548)
+++ /trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/mock/StringEventType.java	(revision 548)
@@ -0,0 +1,32 @@
+package de.ugoe.cs.quest.usageprofiles.mock;
+
+import de.ugoe.cs.quest.eventcore.IEventType;
+
+public class StringEventType implements IEventType {
+    /**  */
+    private static final long serialVersionUID = 1L;
+    String str;
+
+    public StringEventType(String str) {
+        if (str == null) {
+            throw new AssertionError(
+                                     "illegal use of mock StringEventType: str must nut be null");
+        }
+        this.str = str;
+    }
+
+    public String getName() {
+        return "StringEventType";
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if (other instanceof StringEventType) {
+            return str.equals(((StringEventType) other).str);
+        }
+        return false;
+    }
+}
Index: /trunk/quest-core-usageprofiles/.classpath
===================================================================
--- /trunk/quest-core-usageprofiles/.classpath	(revision 547)
+++ /trunk/quest-core-usageprofiles/.classpath	(revision 548)
@@ -2,4 +2,10 @@
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
 		<attributes>
 			<attribute name="optional" value="true"/>
Index: /trunk/quest-core-usageprofiles/pom.xml
===================================================================
--- /trunk/quest-core-usageprofiles/pom.xml	(revision 547)
+++ /trunk/quest-core-usageprofiles/pom.xml	(revision 548)
@@ -9,4 +9,10 @@
 		<url>https://quest.informatik.uni-goettingen.de/svn/quest/trunk/quest-core-usageprofiles</url>
 	</scm>
+	<repositories>
+		<repository>
+			<id>mbari</id>
+			<url>http://mbari-maven-repository.googlecode.com/svn/repository</url>
+		</repository>
+	</repositories>
 	<dependencies>
 		<dependency>
@@ -14,4 +20,19 @@
 			<artifactId>quest-core-events</artifactId>
 			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.jung</groupId>
+			<artifactId>jung-visualization</artifactId>
+			<version>2.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.jung</groupId>
+			<artifactId>jung-graph-impl</artifactId>
+			<version>2.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>jama</groupId>
+			<artifactId>jama</artifactId>
+			<version>1.0.2</version>
 		</dependency>
 	</dependencies>
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/AbstractInsertEventComposite.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/AbstractInsertEventComposite.java	(revision 547)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/AbstractInsertEventComposite.java	(revision 548)
@@ -16,5 +16,5 @@
 	}
 	
-	public abstract Event<?> getEvent(); 
+	public abstract Event getEvent(); 
 
 }
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/EditSequenceDialog.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/EditSequenceDialog.java	(revision 547)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/EditSequenceDialog.java	(revision 548)
@@ -28,5 +28,5 @@
 	private TableColumn tblclmnEventTarget;
 
-	private java.util.List<Event<?>> sequence;
+	private java.util.List<Event> sequence;
 	private SortedSet<String> targets;
 
@@ -46,5 +46,5 @@
 	 * Open the dialog.
 	 */
-	public void open(java.util.List<Event<?>> sequence) {
+	public void open(java.util.List<Event> sequence) {
 		this.sequence = sequence;
 		createContents();
@@ -165,5 +165,5 @@
 	private void updateTableContents() {
 		table.removeAll();
-		for (Event<?> event : sequence) {
+		for (Event event : sequence) {
 			TableItem tableItem = new TableItem(table, SWT.NONE);
 			String target = event.getTarget();
@@ -173,5 +173,5 @@
 				target = target.replace("].", "].\n");
 			}
-			tableItem.setText(new String[] { event.getType(), target });
+			tableItem.setText(new String[] { event.getType().toString(), target });
 		}
 		for (int i = 0; i < table.getColumnCount(); i++) {
@@ -183,5 +183,5 @@
 		InsertAssertionDialog insertDialog = new InsertAssertionDialog(shell,
 				SWT.NONE, targets);
-		Event<?> event = insertDialog.open();
+		Event event = insertDialog.open();
 		if (event != null) {
 			sequence.add(position, event);
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertAssertionDialog.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertAssertionDialog.java	(revision 547)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertAssertionDialog.java	(revision 548)
@@ -21,5 +21,5 @@
 public class InsertAssertionDialog extends Dialog {
 
-	protected Event<?> result;
+	protected Event result;
 	protected Shell shell;
 	
@@ -44,5 +44,5 @@
 	 * @return the result
 	 */
-	public Event<?> open() {
+	public Event open() {
 		result = null;
 		insertEventComposites = new ArrayList<AbstractInsertEventComposite>();
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertFileEquals.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertFileEquals.java	(revision 547)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertFileEquals.java	(revision 548)
@@ -12,5 +12,5 @@
 import org.eclipse.swt.widgets.Button;
 
-import de.ugoe.cs.quest.assertions.AssertEvent;
+import de.ugoe.cs.quest.assertions.FileEqualsAssertEvent;
 import de.ugoe.cs.quest.assertions.FileEqualsReplay;
 import de.ugoe.cs.quest.eventcore.Event;
@@ -74,8 +74,8 @@
 
 	@Override
-	public Event<?> getEvent() {
+	public Event getEvent() {
 		FileEqualsReplay replay = new FileEqualsReplay(expectedText.getText(), actualText.getText());
-		AssertEvent<FileEqualsReplay> event = new AssertEvent<FileEqualsReplay>("FileEqualsAssertion");
-		event.addReplayEvent(replay);
+		Event event = new Event(new FileEqualsAssertEvent());
+		event.addReplayable(replay);
 		return event;
 	}
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertTextEquals.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertTextEquals.java	(revision 547)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/InsertTextEquals.java	(revision 548)
@@ -14,6 +14,8 @@
 
 import de.ugoe.cs.quest.assertions.AssertEvent;
+import de.ugoe.cs.quest.assertions.TextEqualsAssertEventType;
 import de.ugoe.cs.quest.assertions.TextEqualsReplay;
 import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.IEventTarget;
 import de.ugoe.cs.util.ArrayTools;
 
@@ -98,10 +100,10 @@
 
 	@Override
-	public Event<?> getEvent() {		
-		String target = targetText.getText();
+	public Event getEvent() {		
+		IEventTarget target = targetText.getText();
 		TextEqualsReplay replay = new TextEqualsReplay(expectedText.getText(), target);
-		AssertEvent<TextEqualsReplay> event = new AssertEvent<TextEqualsReplay>("TextEqualsAssertion");
+		Event event = new Event(new TextEqualsAssertEventType());
 		event.setTarget(target);
-		event.addReplayEvent(replay);
+		event.addReplayable(replay);
 		return event;
 	}
Index: /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/SequencesDialog.java
===================================================================
--- /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/SequencesDialog.java	(revision 547)
+++ /trunk/quest-ui-swt/src/main/java/de/ugoe/cs/quest/ui/swt/SequencesDialog.java	(revision 548)
@@ -27,5 +27,5 @@
 	
 	private List sequenceList;
-	private Collection<java.util.List<Event<?>>> sequences;
+	private Collection<java.util.List<Event>> sequences;
 	private SortedSet<String> targets;
 	
@@ -85,6 +85,6 @@
 					EditSequenceDialog editSequenceDialog = new EditSequenceDialog(shell, SWT.NONE, targets);
 					int counter = 0;
-					java.util.List<Event<?>> selectedSequence = null;
-					for( java.util.List<Event<?>> sequence : sequences ) {
+					java.util.List<Event> selectedSequence = null;
+					for( java.util.List<Event> sequence : sequences ) {
 						if( counter==index ) {
 							selectedSequence = sequence;
@@ -116,8 +116,8 @@
 		Object dataObject = GlobalDataContainer.getInstance().getData(sequencesName);
 		if( SequenceInstanceOf.isCollectionOfSequences(dataObject)) {
-			sequences = (Collection<java.util.List<Event<?>>>) dataObject;
+			sequences = (Collection<java.util.List<Event>>) dataObject;
 			int seqDigits = Integer.toString(sequences.size()).length();
 			int counter = 1;
-			for( java.util.List<Event<?>> sequence : sequences ) {
+			for( java.util.List<Event> sequence : sequences ) {
 				String seqName = "#"+String.format("%0"+seqDigits+"d", counter)+": "+sequence.size();
 				sequenceList.add(seqName);
@@ -135,6 +135,6 @@
 			if( targets==null ) {
 				targets = new TreeSet<String>();
-				for( java.util.List<Event<?>> sequence : sequences ) {
-					for( Event<?> event : sequence ) {
+				for( java.util.List<Event> sequence : sequences ) {
+					for( Event event : sequence ) {
 						String target = event.getTarget();
 						if( target!=null ) {
