diff --git a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java
index 79898e515647bb2f09eb5ba6cd65f0a86821e3fb..ffc06f19e29fdfc1a754860d0781631b9165a23a 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java
@@ -551,14 +551,6 @@ private void createEventTables(Statement stmt) throws SQLException {
 				+ " display_name TEXT UNIQUE NOT NULL , "
 				+ " super_type_id INTEGER REFERENCES tsk_event_types(event_type_id) )");
 
-		stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(0, 'Event Types', null)");
-		stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(1, 'File System', 0)");
-		stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(2, 'Web Activity', 0)");
-		stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(3, 'Misc Types', 0)");
-		stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(4, 'Modified', 1)");
-		stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(5, 'Accessed', 1)");
-		stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(6, 'Created', 1)");
-		stmt.execute("INSERT INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES(7, 'Changed', 1)");
 		/*
 		* Regarding the timeline event tables schema, note that several columns
 		* in the tsk_event_descriptions table seem, at first glance, to be
diff --git a/bindings/java/src/org/sleuthkit/datamodel/TimelineManager.java b/bindings/java/src/org/sleuthkit/datamodel/TimelineManager.java
index 0669e5ba890dc85b8d809bfbf4c798d84f90f658..f6567fb4626341eb4365bb621de91c9d01c71daf 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/TimelineManager.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/TimelineManager.java
@@ -41,7 +41,6 @@
 import java.util.logging.Logger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import org.apache.commons.lang3.StringEscapeUtils;
 import org.joda.time.DateTimeZone;
 import org.joda.time.Interval;
 import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_TL_EVENT;
@@ -116,22 +115,26 @@ public final class TimelineManager {
 	TimelineManager(SleuthkitCase caseDB) throws TskCoreException {
 		this.caseDB = caseDB;
 
-		//initialize root and base event types, these are added to the DB in c++ land
-		ROOT_CATEGORY_AND_FILESYSTEM_TYPES.forEach(eventType -> eventTypeIDMap.put(eventType.getTypeID(), eventType));
+		List<TimelineEventType> fullList = new ArrayList<>();
+		fullList.addAll(ROOT_CATEGORY_AND_FILESYSTEM_TYPES);
+		fullList.addAll(PREDEFINED_EVENT_TYPES);
 
-		//initialize the other event types that aren't added in c++
 		caseDB.acquireSingleUserCaseWriteLock();
 		try (final CaseDbConnection con = caseDB.getConnection();
-				final Statement statement = con.createStatement()) {
-			for (TimelineEventType type : PREDEFINED_EVENT_TYPES) {
-				String query = " INTO tsk_event_types(event_type_id, display_name, super_type_id) "
-								+ "VALUES( " + type.getTypeID() + ", '"
-								+ escapeSingleQuotes(type.getDisplayName()) + "',"
-								+ type.getParent().getTypeID()
-								+ ")";
-				con.executeUpdate(statement,
-						insertOrIgnore(query)); //NON-NLS
-				eventTypeIDMap.put(type.getTypeID(), type);	
+				final PreparedStatement pStatement = con.prepareStatement(
+						insertOrIgnore(" INTO tsk_event_types(event_type_id, display_name, super_type_id) VALUES (?, ?, ?)"),
+						Statement.NO_GENERATED_KEYS)) {
+			for (TimelineEventType type : fullList) {
+				pStatement.setLong(1, type.getTypeID());
+				pStatement.setString(2, escapeSingleQuotes(type.getDisplayName()));
+				if (type != type.getParent()) {
+					pStatement.setLong(3, type.getParent().getTypeID());
+				} else {
+					pStatement.setNull(3, java.sql.Types.INTEGER);
+				}
+
+				con.executeUpdate(pStatement);
+				eventTypeIDMap.put(type.getTypeID(), type);
 			}
 		} catch (SQLException ex) {
 			throw new TskCoreException("Failed to initialize timeline event types", ex); // NON-NLS