Index: /raptor-client/trunk/src/main/java/uk/ac/cardiff/raptor/runtimeutils/ReflectionHelper.java
===================================================================
--- /raptor-client/trunk/src/main/java/uk/ac/cardiff/raptor/runtimeutils/ReflectionHelper.java	(revision 1363)
+++ /raptor-client/trunk/src/main/java/uk/ac/cardiff/raptor/runtimeutils/ReflectionHelper.java	(revision 1364)
@@ -141,4 +141,37 @@
                     if (o instanceof uk.ac.cardiff.model.event.Event) {
                         allClasses.add(o.getClass().getSimpleName());
+                    }
+            } catch (ClassNotFoundException cnfex) {
+                log.error("error getting subclasses of Entry, {}", cnfex);
+            } catch (InstantiationException iex) {
+                // log.error("{}", iex);
+            } catch (IllegalAccessException iaex) {
+                // The class is not public
+            }
+        }
+        return allClasses;
+    }
+
+    /**
+     * Uses reflection to get all the classes that are in the <code>EVENT_PACKAGE_NAME</code> package and return them as
+     * a list of Classes.
+     * 
+     * @return
+     */
+    public static List<Class<?>> getAllEventClassTypes() {
+        List<Class<?>> allClasses = new ArrayList<Class<?>>();
+        String forPckgName = EVENT_PACKAGE_NAME;
+        String jarFile = getJARFilePath(forPckgName);
+        jarFile = jarFile.replace("file:", "");
+        jarFile = jarFile.replaceAll("%20", "\\ ");
+        log.debug("jar {}", jarFile);
+        List<String> classes = getClassNamesInJarOrFolder(jarFile, forPckgName);
+
+        for (String classname : classes) {
+            try {
+                Object o = Class.forName(classname.replace(".class", "")).newInstance();
+                if (o != null)
+                    if (o instanceof uk.ac.cardiff.model.event.Event) {
+                        allClasses.add(o.getClass());
                     }
             } catch (ClassNotFoundException cnfex) {
@@ -501,5 +534,5 @@
             return result;
         } catch (Throwable e) {
-            log.error("Field name '" + fieldname + "' does not match internal model attribute");
+            log.error("Field name '" + fieldname + "' does not match internal model attribute [{}]", e.getMessage());
 
         }
Index: /raptor-client/trunk/src/main/java/uk/ac/cardiff/raptor/store/impl/LogFileIncrementalMemoryEventHandler.java
===================================================================
--- /raptor-client/trunk/src/main/java/uk/ac/cardiff/raptor/store/impl/LogFileIncrementalMemoryEventHandler.java	(revision 1363)
+++ /raptor-client/trunk/src/main/java/uk/ac/cardiff/raptor/store/impl/LogFileIncrementalMemoryEventHandler.java	(revision 1364)
@@ -78,4 +78,7 @@
      */
     public boolean addEvent(Event event) {
+        if (eventNotValid(event)) {
+            return false;
+        }
         addEventIdIfNull(event);
         boolean isAfter = isAfter(event);
@@ -99,4 +102,16 @@
         return false;
 
+    }
+
+    /**
+     * Determines if the event has the present and correct attributes to be added.
+     * 
+     * @param event
+     */
+    private boolean eventNotValid(Event event) {
+        if (event.getEventTime() == null) {
+            return false;
+        }
+        return true;
     }
 
