Index: /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/SequenceInstanceOf.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/SequenceInstanceOf.java	(revision 540)
+++ /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/SequenceInstanceOf.java	(revision 541)
@@ -44,5 +44,5 @@
 				Object listObj = ((Collection<?>) obj).iterator().next();
 				if (listObj instanceof List<?>) {
-					if (((List<?>) listObj).iterator().next() instanceof Event<?>) {
+					if (((List<?>) listObj).iterator().next() instanceof Event) {
 						return true;
 					}
@@ -68,5 +68,5 @@
 		try {
 			if (obj instanceof List<?>) {
-				if (((List<?>) obj).iterator().next() instanceof Event<?>) {
+				if (((List<?>) obj).iterator().next() instanceof Event) {
 					return true;
 				}
Index: /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/DummyEventType.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/DummyEventType.java	(revision 541)
+++ /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/DummyEventType.java	(revision 541)
@@ -0,0 +1,5 @@
+package de.ugoe.cs.quest.eventcore;
+
+public class DummyEventType implements IEventType {
+
+}
Index: /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/Event.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/Event.java	(revision 540)
+++ /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/Event.java	(revision 541)
@@ -1,11 +1,13 @@
+
 package de.ugoe.cs.quest.eventcore;
 
 import java.io.Serializable;
 import java.security.InvalidParameterException;
+import java.util.LinkedList;
+import java.util.List;
 
 /**
  * <p>
- * Base class for all events. An event is described by its {@link #type} and its
- * {@link #target}.
+ * Base class for all events. An event is described by its {@link #type} and its {@link #target}.
  * </p>
  * 
@@ -14,314 +16,221 @@
  * 
  * @param <T>
- *            Can be used to declare that events belong to a specific platform
- *            without subclassing.
+ *            Can be used to declare that events belong to a specific platform without subclassing.
  */
-public class Event<T> implements Serializable {
-
-	/**
-	 * Id for object serialization.
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * <p>
-	 * Global start event that can be used to indicate the start of a sequence.
-	 * </p>
-	 */
-	public static final Event<Object> STARTEVENT = new Event<Object>("START");
-
-	/**
-	 * <p>
-	 * Global end event that can be used to indicate the end of a sequence.
-	 */
-	public static final Event<Object> ENDEVENT = new Event<Object>("END");
-
-	/**
-	 * <p>
-	 * Type of the event.
-	 * </p>
-	 */
-	protected String type;
-
-	/**
-	 * </p> Target of the event.
-	 */
-	protected String target = null;
-
-	/**
-	 * <p>
-	 * Short description of the event target.
-	 * </p>
-	 */
-	protected String targetShort = null;
-
-	/**
-	 * Further information about the event that shall be included in its Id.
-	 */
-	protected String idInfo = "";
-
-	/**
-	 * <p>
-	 * Constructor. Creates a new Event with a given type.
-	 * </p>
-	 * 
-	 * @param type
-	 *            type of the event
-	 */
-	public Event(String type) {
-		if (type == null) {
-			throw new InvalidParameterException("Event type must not be null");
-		}
-		this.type = type;
-	}
-
-	/**
-	 * <p>
-	 * Two events are equal, if their {@link #type} and {@link #target} are
-	 * equal.
-	 * </p>
-	 * <p>
-	 * See {@link Object#equals(Object)} for further information.
-	 * </p>
-	 * 
-	 * @param other
-	 *            Event that is compared to this
-	 * @return true, if events are equal, false otherwise
-	 */
-	@Override
-	public boolean equals(Object other) {
-		if (this == other) {
-			return true;
-		}
-		if (other instanceof Event<?>) {
-			Event<?> otherEvent = (Event<?>) other;
-			if (otherEvent.canEqual(this)) {
-				if (type != null) {
-					return targetEquals(otherEvent.target)
-							&& type.equals(otherEvent.type);
-				} else {
-					return targetEquals(otherEvent.target)
-							&& otherEvent.type == null;
-				}
-			} else {
-				return false;
-			}
-		} else {
-			return false;
-		}
-	}
-
-	public boolean canEqual(Object other) {
-		return (other instanceof Event<?>);
-	}
-
-	/**
-	 * <p>
-	 * Returns {@link #getStandardId()} as String representation of the event.
-	 * </p>
-	 * 
-	 * @return String represenation of the event
-	 */
-	@Override
-	public String toString() {
-		return getStandardId();
-	}
-
-	/**
-	 * Informations about the event important for its Id that is neither target
-	 * nor type.
-	 * 
-	 * @return {@link #idInfo} of the event
-	 */
-	public String getIdInfo() {
-		return idInfo;
-	}
-
-	/**
-	 * <p>
-	 * If {@link #targetShort} is set, a shortend version of the Id is returned
-	 * of the form {@link #targetShort}.{@link #type}.{@link #idInfo} is
-	 * returned. Otherwise the standard Id is returned (see
-	 * {@link #getStandardId()}).
-	 * </p>
-	 * 
-	 * @return if available, shortend Id string; {@link #getStandardId()}
-	 *         otherwise
-	 */
-	public String getShortId() {
-		String shortId = null;
-		if (targetShort != null) {
-			shortId = targetShort + "." + getType();
-			if (!"".equals(idInfo)) {
-				shortId += "." + idInfo;
-			}
-		} else {
-			shortId = getStandardId();
-		}
-		return shortId;
-	}
-
-	/**
-	 * <p>
-	 * Returns the Id string of the event. It has the form {@link #target}.
-	 * {@link #type}.{@link #idInfo};
-	 * <p>
-	 * 
-	 * @return Id string of the event
-	 */
-	public String getStandardId() {
-		String id = "";
-		if (target != null) {
-			id += target + ".";
-		}
-		id += getType();
-		if (!"".equals(idInfo)) {
-			id += "." + idInfo;
-		}
-		return id;
-	}
-
-	/**
-	 * <p>
-	 * Returns the {@link #target} of the event.
-	 * </p>
-	 * 
-	 * @return {@link #target} of the event
-	 */
-	public String getTarget() {
-		return target;
-	}
-
-	/**
-	 * <p>
-	 * Returns the {@link #targetShort} of the event.
-	 * </p>
-	 * 
-	 * @return {@link #targetShort} of the event
-	 */
-	protected String getTargetShort() {
-		return targetShort;
-	}
-
-	/**
-	 * <p>
-	 * Returns the {@link #type} of the event.
-	 * </p>
-	 * 
-	 * @return {@link #type} of the event
-	 */
-	public String getType() {
-		return type;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#hashCode()
-	 */
-	@Override
-	public int hashCode() {
-		int multiplier = 17;
-		int hash = 42;
-		if (type != null) {
-			hash = multiplier * hash + type.hashCode();
-		}
-		hash = multiplier * hash + targetHashCode();
-
-		return hash;
-	}
-
-	/**
-	 * <p>
-	 * Sets the {@link #idInfo} of the event. The idInfo is optional and
-	 * contains information important for the event's Id that is neither target
-	 * nor type.
-	 * </p>
-	 * 
-	 * @param info
-	 *            {@link #idInfo} of the event
-	 */
-	public void setIdInfo(String info) {
-		idInfo = info;
-	}
-
-	/**
-	 * <p>
-	 * Sets the target of the event. Once set, the target cannot be changed.
-	 * </p>
-	 * 
-	 * @param target
-	 *            target of the event
-	 * @return true, if target was changed, false otherwise
-	 */
-	public boolean setTarget(String target) {
-		if (this.target != null) {
-			return false;
-		}
-		this.target = target;
-		return true;
-	}
-
-	/**
-	 * <p>
-	 * Sets the short description of the event target. Once set, the target
-	 * cannot be changed.
-	 * </p>
-	 * 
-	 * @param targetShort
-	 *            short target description
-	 * @return true, if target was changed, false otherwise
-	 */
-	public boolean setTargetShort(String targetShort) {
-		if (this.targetShort != null) {
-			return false;
-		}
-		this.targetShort = targetShort;
-		return true;
-	}
-
-	/**
-	 * <p>
-	 * This function is used by {@link #equals(Object)} to determine if the
-	 * targets of both events are equal. The standard implementation provided by
-	 * this class performs a String comparison between the target strings.
-	 * </p>
-	 * <p>
-	 * Subclasses can override this method to implemented more sophisticated
-	 * means for the target comparison, e.g., to account for changes in the
-	 * title of a widget.
-	 * </p>
-	 * 
-	 * @param otherTarget
-	 *            other target string to which the target if this event is
-	 *            compared to
-	 * @return true if the targets are equals; false otherwise
-	 */
-	protected boolean targetEquals(String otherTarget) {
-		boolean retVal;
-		if (target != null) {
-			retVal = target.equals(otherTarget);
-		} else {
-			retVal = (otherTarget == null);
-		}
-		return retVal;
-	}
-
-	/**
-	 * <p>
-	 * This function is used by {@link #hashCode()} to determine how the hash of
-	 * the {@link #target}. It has to be overridden by subclasses that implement
-	 * {@link #targetEquals(String)}, to ensure that the equals/hashCode
-	 * contract remains valid.
-	 * </p>
-	 * 
-	 * @return hash of the target
-	 */
-	protected int targetHashCode() {
-		if (target != null) {
-			return target.hashCode();
-		} else {
-			return 0;
-		}
-	}
+public class Event implements Serializable {
+
+    /**
+     * Id for object serialization.
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * <p>
+     * Global start event that can be used to indicate the start of a sequence.
+     * </p>
+     */
+    public static final Event STARTEVENT = new Event(new DummyEventType());
+
+    /**
+     * <p>
+     * Global end event that can be used to indicate the end of a sequence.
+     */
+    public static final Event ENDEVENT = new Event(new DummyEventType());
+
+    /**
+     * <p>
+     * Type of the event.
+     * </p>
+     */
+    protected IEventType type;
+
+    /**
+     * </p> Target of the event.
+     */
+    protected IEventTarget target = null;
+
+    /**
+     * <p>
+     * List of {@link IReplayable}s of type T that describes the replay of an event. The
+     * {@link IReplayable}s can be interpreted as <it>sub-events</it> on the platform level that
+     * make up the abstract event.
+     * </p>
+     */
+    protected List<IReplayable> replay = new LinkedList<IReplayable>();
+
+    /**
+     * <p>
+     * Constructor. Creates a new Event with a given type. The type must not be null.
+     * </p>
+     * 
+     * @param type
+     *            type of the event
+     */
+    public Event(IEventType type) {
+        if (type == null) {
+            throw new InvalidParameterException("Event type must not be null");
+        }
+        this.type = type;
+    }
+
+    /**
+     * <p>
+     * Constructor. Creates a new Event with a given type and target. The type must not be null.
+     * </p>
+     * 
+     * @param type
+     *            type of the event
+     * @param target
+     *            target of the event
+     */
+    public Event(IEventType type, IEventTarget target) {
+        this(type);
+        this.target = target;
+    }
+
+    /**
+     * <p>
+     * Two events are equal, if their {@link #type} and {@link #target} are equal.
+     * </p>
+     * <p>
+     * See {@link Object#equals(Object)} for further information.
+     * </p>
+     * 
+     * @param other
+     *            Event that is compared to this
+     * @return true, if events are equal, false otherwise
+     */
+    @Override
+    public boolean equals(Object other) {
+        if (this == other) {
+            return true;
+        }
+        if (other instanceof Event) {
+            Event otherEvent = (Event) other;
+            if (target != null) {
+                return type.equals(otherEvent.type) && target.equals(otherEvent.target);
+            }
+            else {
+                return type.equals(otherEvent.type) && otherEvent.target == null;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * <p>
+     * Returns {@link #getStandardId()} as String representation of the event.
+     * </p>
+     * 
+     * @return String representation of the event
+     */
+    @Override
+    public String toString() {
+        return "(" + type.toString() + ";" + target.toString() + ")";
+    }
+
+    /**
+     * <p>
+     * Returns the {@link #target} of the event.
+     * </p>
+     * 
+     * @return {@link #target} of the event
+     */
+    public IEventTarget getTarget() {
+        return target;
+    }
+
+    /**
+     * <p>
+     * Returns the {@link #type} of the event.
+     * </p>
+     * 
+     * @return {@link #type} of the event
+     */
+    public IEventType getType() {
+        return type;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        int multiplier = 17;
+        int hash = 42;
+        if (type != null) {
+            hash = multiplier * hash + type.hashCode();
+        }
+        if (target != null) {
+            hash = multiplier * hash + target.hashCode();
+        }
+        return hash;
+    }
+
+    /**
+     * <p>
+     * Sets the target of the event. Once set, the target cannot be changed.
+     * </p>
+     * 
+     * @param target
+     *            target of the event
+     * @return true, if target was changed, false otherwise
+     */
+    public boolean setTarget(IEventTarget target) {
+        if (this.target != null) {
+            return false;
+        }
+        this.target = target;
+        return true;
+    }
+
+    /**
+     * <p>
+     * Adds a new {@link IReplayable} of type T to the replay sequence.
+     * </p>
+     * 
+     * @param replayable
+     *            element that is added to the sequence
+     * @throws InvalidParameterException
+     *             thrown is replayable is null
+     */
+    public void addReplayable(IReplayable replayable) {
+        if (replayable == null) {
+            throw new InvalidParameterException("replayble must not be null");
+        }
+        replay.add(replayable);
+    }
+
+    /**
+     * <p>
+     * Adds a {@link List}ist of {@link IReplayable} to the replay sequence.
+     * </p>
+     * 
+     * @param generatedReplaySeq
+     *            {@link List} that is added to the sequence
+     * @throws InvalidParameterException
+     *             thrown if generatedReplaySeq is null
+     */
+    public void addReplayableSequence(List<IReplayable> generatedReplaySeq) {
+        if (generatedReplaySeq == null) {
+            throw new InvalidParameterException("generatedReplaySeq must not be null");
+        }
+        replay.addAll(generatedReplaySeq);
+    }
+
+    /**
+     * <p>
+     * Returns a the list of replay events.
+     * </p>
+     * <p>
+     * The return value is a copy of the list used internally!
+     * </p>
+     * 
+     * @return list of replay events.
+     */
+    public List<IReplayable> getReplayables() {
+        return new LinkedList<IReplayable>(replay);
+    }
 }
Index: /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IEventTarget.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IEventTarget.java	(revision 541)
+++ /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IEventTarget.java	(revision 541)
@@ -0,0 +1,16 @@
+
+package de.ugoe.cs.quest.eventcore;
+
+/**
+ * 
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @version $Revision: $ $Date: Aug 16, 2012$
+ * @author 2012, last modified by $Author: sherbold$
+ */
+public interface IEventTarget {
+
+    public String getPlatform();
+}
Index: /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IEventType.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IEventType.java	(revision 541)
+++ /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IEventType.java	(revision 541)
@@ -0,0 +1,13 @@
+package de.ugoe.cs.quest.eventcore;
+
+/**
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @version $Revision: $ $Date: Aug 16, 2012$
+ * @author 2012, last modified by $Author: sherbold$
+ */
+public interface IEventType {
+
+}
Index: /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IReplayable.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IReplayable.java	(revision 540)
+++ /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/IReplayable.java	(revision 541)
@@ -24,12 +24,3 @@
 	 */
 	String getReplay();
-
-	/**
-	 * <p>
-	 * Returns the target of the replayable.
-	 * </p>
-	 * 
-	 * @return target of the replayable
-	 */
-	String getTarget();
 }
Index: unk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/ReplayableEvent.java
===================================================================
--- /trunk/quest-core-events/src/main/java/de/ugoe/cs/quest/eventcore/ReplayableEvent.java	(revision 540)
+++ 	(revision )
@@ -1,167 +1,0 @@
-package de.ugoe.cs.quest.eventcore;
-
-import java.security.InvalidParameterException;
-import java.util.LinkedList;
-import java.util.List;
-
-import de.ugoe.cs.quest.IReplayDecorator;
-
-/**
- * <p>
- * Subclass of {@link Event} for events that contain all informations required
- * for replaying them, i.e., generating scripts that can used for automated
- * software execution.
- * </p>
- * 
- * @author Steffen Herbold
- * @version 1.0
- * 
- * @param <T>
- *            Allows only types that extend {@link IReplayable} and is used to
- *            define a list of replayables that describe the replay of the
- *            event.
- */
-public class ReplayableEvent<T extends IReplayable> extends Event<T> {
-
-	/**
-	 * Id for object serialization.
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * <p>
-	 * List of {@link IReplayable}s of type T that describes the replay of an
-	 * event. The {@link IReplayable}s can be interpreted as <it>sub-events</it>
-	 * on the platform level that make up the abstract event.
-	 * </p>
-	 */
-	protected List<T> replayEvents = new LinkedList<T>();;
-
-	/**
-	 * <p>
-	 * Defines whether the replay is valid or invalid. It may be invalid, e.g.,
-	 * due to errors during the generation of the event or lack of vital
-	 * information.
-	 * </p>
-	 */
-	protected boolean replayValid = true;
-
-	/**
-	 * <p>
-	 * {@link IReplayDecorator} used when replays of this type are written.
-	 * </p>
-	 */
-	protected IReplayDecorator decorator = null;
-
-	/**
-	 * <p>
-	 * Constructor. Creates a new event with the given type.
-	 * <p>
-	 * 
-	 * @param type
-	 *            type of the event
-	 * @see Event#Event(String)
-	 */
-	public ReplayableEvent(String type) {
-		super(type);
-	}
-
-	/**
-	 * <p>
-	 * Adds a new {@link IReplayable} of type T to the replay sequence.
-	 * </p>
-	 * 
-	 * @param replayable
-	 *            element that is added to the sequence
-	 * @throws InvalidParameterException
-	 *             thrown is replayable is null
-	 */
-	public void addReplayEvent(T replayable) {
-		if (replayable == null) {
-			throw new InvalidParameterException("replayble must not be null");
-		}
-		replayEvents.add(replayable);
-	}
-
-	/**
-	 * <p>
-	 * Adds a {@link List}ist of {@link IReplayable} to the replay sequence.
-	 * </p>
-	 * 
-	 * @param generatedReplaySeq
-	 *            {@link List} that is added to the sequence
-	 * @throws InvalidParameterException
-	 *             thrown if generatedReplaySeq is null
-	 */
-	public void addReplaySequence(List<T> generatedReplaySeq) {
-		if (generatedReplaySeq == null) {
-			throw new InvalidParameterException(
-					"generatedReplaySeq must not be null");
-		}
-		replayEvents.addAll(generatedReplaySeq);
-	}
-
-	/**
-	 * <p>
-	 * Returns the {@link IReplayDecorator} of the event.
-	 * </p>
-	 * 
-	 * @return {@link IReplayDecorator} of the event; null if no decorator has
-	 *         been set
-	 */
-	public IReplayDecorator getReplayDecorator() {
-		return decorator;
-	}
-
-	/**
-	 * <p>
-	 * Returns a the list of replay events.
-	 * </p>
-	 * <p>
-	 * The return value is a copy of the list used internally!
-	 * </p>
-	 * 
-	 * @return list of replay events.
-	 */
-	public List<T> getReplayMessages() {
-		return new LinkedList<T>(replayEvents);
-	}
-
-	/**
-	 * <p>
-	 * Returns whether the replay is valid or not.
-	 * </p>
-	 * 
-	 * @return true, if replay is valid; false otherwise.
-	 */
-	public boolean hasValidReplay() {
-		return replayValid;
-	}
-
-	/**
-	 * <p>
-	 * Marks the replay as invalid. Once marked as invalid, it remains so and
-	 * cannot be changed back to valid.
-	 * </p>
-	 */
-	public void invalidateReplay() {
-		replayValid = false;
-	}
-
-	/**
-	 * <p>
-	 * Sets the {@link IReplayDecorator} associated with the event.
-	 * </p>
-	 * 
-	 * @param decorator
-	 *            decorator associated with the event
-	 */
-	public void setDecorator(IReplayDecorator decorator) {
-		this.decorator = decorator;
-	}
-	
-	@Override
-	public boolean canEqual(Object other) {
-		return (other instanceof ReplayableEvent<?>);
-	}
-}
