diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties
index f15316a7bdac9d9a8d5bed12c173bdc578074893..a0defa9e33542f2fed1d9db8fadc964b85a374a6 100644
--- a/Core/nbproject/project.properties
+++ b/Core/nbproject/project.properties
@@ -17,8 +17,11 @@ file.reference.c3p0-0.9.5.jar=release\\modules\\ext\\c3p0-0.9.5.jar
 file.reference.checker-compat-qual-2.5.3.jar=release\\modules\\ext\\checker-compat-qual-2.5.3.jar
 file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar
 file.reference.commons-codec-1.11.jar=release\\modules\\ext\\commons-codec-1.11.jar
+file.reference.commons-collections-3.2.2.jar=release\\modules\\ext\\commons-collections-3.2.2.jar
 file.reference.commons-dbcp2-2.1.1.jar=release\\modules\\ext\\commons-dbcp2-2.1.1.jar
 file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar
+file.reference.commons-lang-2.6.jar=release\\modules\\ext\\commons-lang-2.6.jar
+file.reference.commons-lang3-3.5.jar=release\\modules\\ext\\commons-lang3-3.5.jar
 file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar
 file.reference.commons-pool2-2.4.2.jar=release\\modules\\ext\\commons-pool2-2.4.2.jar
 file.reference.java-diff-utils-4.8.jar=release\\modules\\ext\\java-diff-utils-4.8.jar
diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml
index d3ac663a28d8335a844a675bbf525f11682025b5..08c661503d6dd8ae25d39d497cf8fda51b3503aa 100644
--- a/Core/nbproject/project.xml
+++ b/Core/nbproject/project.xml
@@ -624,6 +624,10 @@
                 <runtime-relative-path>ext/jackson-core-2.9.7.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\jackson-core-2.9.7.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-lang3-3.5.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\commons-lang3-3.5.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/log4j-1.2.16.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\log4j-1.2.16.jar</binary-origin>
@@ -676,6 +680,10 @@
                 <runtime-relative-path>ext/jdom-2.0.5.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\jdom-2.0.5.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/gson-2.7.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\gson-2.7.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/google-api-client-1.27.0.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\google-api-client-1.27.0.jar</binary-origin>
@@ -692,6 +700,10 @@
                 <runtime-relative-path>ext/jython-standalone-2.7.0.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\jython-standalone-2.7.0.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-lang-2.6.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\commons-lang-2.6.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/jsr305-3.0.2.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\jsr305-3.0.2.jar</binary-origin>
diff --git a/Experimental/ivy.xml b/Experimental/ivy.xml
index 4626a7d3d5869592ab1070ce7851cd366ce51f2c..c1e0e8c1d637abd57c7ea7df3f198d9339128467 100644
--- a/Experimental/ivy.xml
+++ b/Experimental/ivy.xml
@@ -8,6 +8,7 @@
         <dependency conf="experimental->default" org="com.github.lgooddatepicker" name="LGoodDatePicker" rev="10.3.1"/>
         <dependency conf="experimental->default" org="org.postgresql" name="postgresql" rev="9.4-1201-jdbc41"/>
         <dependency conf="experimental->default" org="com.mchange" name="c3p0" rev="0.9.5"/>
+        <dependency conf="experimental->default" org="com.fasterxml.jackson.core" name="jackson-core" rev="2.7.0"/>
         <dependency conf="experimental->default" org="org.swinglabs.swingx" name="swingx-all" rev="1.6.4"/>
     </dependencies>
 </ivy-module>
diff --git a/Experimental/nbproject/project.properties b/Experimental/nbproject/project.properties
index 72ff1ad97d43e9a06fdc9e24af6af3b52486f4ab..c5203cbba582f85e63de0c501ff113e2ccbbc859 100644
--- a/Experimental/nbproject/project.properties
+++ b/Experimental/nbproject/project.properties
@@ -1,4 +1,5 @@
 file.reference.c3p0-0.9.5.jar=release/modules/ext/c3p0-0.9.5.jar
+file.reference.jackson-core-2.7.0.jar=release/modules/ext/jackson-core-2.7.0.jar
 file.reference.LGoodDatePicker-10.3.1.jar=release/modules/ext/LGoodDatePicker-10.3.1.jar
 file.reference.mchange-commons-java-0.2.9.jar=release/modules/ext/mchange-commons-java-0.2.9.jar
 file.reference.postgresql-9.4-1201-jdbc41.jar=release/modules/ext/postgresql-9.4-1201-jdbc41.jar
diff --git a/Experimental/nbproject/project.xml b/Experimental/nbproject/project.xml
index 5f0b81a006a7447b3d9dc79e2e173e1007e66d14..953292b3c5f6c5b7a2bb3cfbe52dad747c1dc563 100644
--- a/Experimental/nbproject/project.xml
+++ b/Experimental/nbproject/project.xml
@@ -178,6 +178,10 @@
                 <runtime-relative-path>ext/mchange-commons-java-0.2.9.jar</runtime-relative-path>
                 <binary-origin>release/modules/ext/mchange-commons-java-0.2.9.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/jackson-core-2.7.0.jar</runtime-relative-path>
+                <binary-origin>release/modules/ext/jackson-core-2.7.0.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/c3p0-0.9.5.jar</runtime-relative-path>
                 <binary-origin>release/modules/ext/c3p0-0.9.5.jar</binary-origin>
diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/FileExporter.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/FileExporter.java
index 49c8a0ccf589131869501e7646412166473904c7..56191def152ad2eca5dd59c421481488825b7272 100644
--- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/FileExporter.java
+++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/FileExporter.java
@@ -18,9 +18,9 @@
  */
 package org.sleuthkit.autopsy.experimental.autoingest;
 
-//import com.fasterxml.jackson.core.JsonEncoding;
-//import com.fasterxml.jackson.core.JsonFactory;
-//import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonEncoding;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -62,9 +62,9 @@ final class FileExporter {
     private FileExportSettings settings;
     private Path filesDirPath;
     private Path reportsDirPath;
-//    private JsonFactory jsonGeneratorFactory;
-//    private JsonGenerator masterCatalog;
-//    private Map<String, JsonGenerator> ruleNamesToCatalogs;
+    private JsonFactory jsonGeneratorFactory;
+    private JsonGenerator masterCatalog;
+    private Map<String, JsonGenerator> ruleNamesToCatalogs;
     private List<Path> flagFilePaths;
     
     FileExporter() throws FileExportException {
@@ -110,7 +110,7 @@ void process(String deviceId, List<Content> dataSources, Supplier<Boolean> cance
                 }
                 exportFiles(fileIdsToRuleNames, cancelCheck);
             }
-//            closeCatalogs();
+            closeCatalogs();
             writeFlagFiles();
         } catch (FileExportSettings.PersistenceException | FileExportRuleSet.ExportRulesException | TskCoreException | IOException | NoCurrentCaseException ex) {
             throw new FileExportException("Error occurred during file export", ex);
@@ -212,49 +212,49 @@ private boolean isRequiredModuleEnabled(String requiredModuleCanonicalName, Inge
      *                                                 generator.
      */
     private void setUp() throws FileExportSettings.PersistenceException, IOException {
-//        /*
-//         * Create the file export and report root directory paths.
-//         */
-//        filesDirPath = settings.getFilesRootDirectory();
-//        filesDirPath = filesDirPath.resolve(deviceId);
-//        reportsDirPath = settings.getReportsRootDirectory();
-//        reportsDirPath = reportsDirPath.resolve(deviceId);
-//
-//        /*
-//         * Delete the results of a previous run, if any. Results deletion cleans
-//         * up for a crashed auto ingest job.
-//         */
-//        FileUtil.deleteDir(reportsDirPath.toFile());
-//        FileUtil.deleteDir(filesDirPath.toFile());
-//
-//        /*
-//         * Create the file export and report root directories.
-//         */
-//        Files.createDirectories(filesDirPath);
-//        Files.createDirectories(reportsDirPath);
-//
-//        /*
-//         * Create the JSON generator for the master catalog of exported files
-//         * and a map to hold the JSON generators for the rule catalogs.
-//         */
-//        jsonGeneratorFactory = new JsonFactory();
-//        jsonGeneratorFactory.setRootValueSeparator("\r\n");
-//        String catalogName = settings.getMasterCatalogName();
-//        String catalogDir = catalogName.substring(0, 1).toUpperCase() + catalogName.substring(1);
-//        Path catalogPath = Paths.get(reportsDirPath.toString(), catalogDir, catalogName + ".json");
-//        Files.createDirectories(catalogPath.getParent());
-//        File catalogFile = catalogPath.toFile();
-//        masterCatalog = jsonGeneratorFactory.createGenerator(catalogFile, JsonEncoding.UTF8);
-//        ruleNamesToCatalogs = new HashMap<>();
-//
-//        /*
-//         * Set up the paths for the flag files that are written to signal export
-//         * is complete for thsi device.
-//         */
-//        flagFilePaths = new ArrayList<>();
-//        flagFilePaths.add(Paths.get(filesDirPath.toString(), settings.getExportCompletedFlagFileName()));
-//        flagFilePaths.add(Paths.get(reportsDirPath.toString(), catalogDir, settings.getExportCompletedFlagFileName()));
-//        flagFilePaths.add(Paths.get(reportsDirPath.toString(), settings.getRulesEvaluatedFlagFileName()));
+        /*
+         * Create the file export and report root directory paths.
+         */
+        filesDirPath = settings.getFilesRootDirectory();
+        filesDirPath = filesDirPath.resolve(deviceId);
+        reportsDirPath = settings.getReportsRootDirectory();
+        reportsDirPath = reportsDirPath.resolve(deviceId);
+
+        /*
+         * Delete the results of a previous run, if any. Results deletion cleans
+         * up for a crashed auto ingest job.
+         */
+        FileUtil.deleteDir(reportsDirPath.toFile());
+        FileUtil.deleteDir(filesDirPath.toFile());
+
+        /*
+         * Create the file export and report root directories.
+         */
+        Files.createDirectories(filesDirPath);
+        Files.createDirectories(reportsDirPath);
+
+        /*
+         * Create the JSON generator for the master catalog of exported files
+         * and a map to hold the JSON generators for the rule catalogs.
+         */
+        jsonGeneratorFactory = new JsonFactory();
+        jsonGeneratorFactory.setRootValueSeparator("\r\n");
+        String catalogName = settings.getMasterCatalogName();
+        String catalogDir = catalogName.substring(0, 1).toUpperCase() + catalogName.substring(1);
+        Path catalogPath = Paths.get(reportsDirPath.toString(), catalogDir, catalogName + ".json");
+        Files.createDirectories(catalogPath.getParent());
+        File catalogFile = catalogPath.toFile();
+        masterCatalog = jsonGeneratorFactory.createGenerator(catalogFile, JsonEncoding.UTF8);
+        ruleNamesToCatalogs = new HashMap<>();
+
+        /*
+         * Set up the paths for the flag files that are written to signal export
+         * is complete for thsi device.
+         */
+        flagFilePaths = new ArrayList<>();
+        flagFilePaths.add(Paths.get(filesDirPath.toString(), settings.getExportCompletedFlagFileName()));
+        flagFilePaths.add(Paths.get(reportsDirPath.toString(), catalogDir, settings.getExportCompletedFlagFileName()));
+        flagFilePaths.add(Paths.get(reportsDirPath.toString(), settings.getRulesEvaluatedFlagFileName()));
     }
 
     /**
@@ -341,31 +341,31 @@ private void exportFiles(Map<Long, List<String>> fileIdsToRuleNames, Supplier<Bo
      *                          storage.
      */
     private void exportFile(Long fileId, List<String> ruleNames, Supplier<Boolean> cancelCheck) throws TskCoreException, IOException, NoCurrentCaseException {
-//        AbstractFile file = Case.getCurrentCaseThrows().getSleuthkitCase().getAbstractFileById(fileId);
-//        if (!shouldExportFile(file)) {
-//            return;
-//        }
-//        Map<BlackboardArtifact, List<BlackboardAttribute>> artifactsToAttributes = new HashMap<>();
-//        List<BlackboardArtifact> artifacts = file.getAllArtifacts();
-//        for (BlackboardArtifact artifact : artifacts) {
-//            artifactsToAttributes.put(artifact, artifact.getAttributes());
-//        }
-//        Path filePath = exportFileToSecondaryStorage(file, cancelCheck);
-//        if (filePath == null) {
-//            return;
-//        }
-//        addFileToCatalog(file, artifactsToAttributes, filePath, masterCatalog);
-//        for (String ruleName : ruleNames) {
-//            JsonGenerator ruleCatalog = this.ruleNamesToCatalogs.get(ruleName);
-//            if (null == ruleCatalog) {
-//                Path catalogPath = Paths.get(reportsDirPath.toString(), ruleName, "catalog.json");
-//                Files.createDirectories(catalogPath.getParent());
-//                File catalogFile = catalogPath.toFile();
-//                ruleCatalog = jsonGeneratorFactory.createGenerator(catalogFile, JsonEncoding.UTF8);
-//                ruleNamesToCatalogs.put(ruleName, ruleCatalog);
-//            }
-//            addFileToCatalog(file, artifactsToAttributes, filePath, ruleCatalog);
-//        }
+        AbstractFile file = Case.getCurrentCaseThrows().getSleuthkitCase().getAbstractFileById(fileId);
+        if (!shouldExportFile(file)) {
+            return;
+        }
+        Map<BlackboardArtifact, List<BlackboardAttribute>> artifactsToAttributes = new HashMap<>();
+        List<BlackboardArtifact> artifacts = file.getAllArtifacts();
+        for (BlackboardArtifact artifact : artifacts) {
+            artifactsToAttributes.put(artifact, artifact.getAttributes());
+        }
+        Path filePath = exportFileToSecondaryStorage(file, cancelCheck);
+        if (filePath == null) {
+            return;
+        }
+        addFileToCatalog(file, artifactsToAttributes, filePath, masterCatalog);
+        for (String ruleName : ruleNames) {
+            JsonGenerator ruleCatalog = this.ruleNamesToCatalogs.get(ruleName);
+            if (null == ruleCatalog) {
+                Path catalogPath = Paths.get(reportsDirPath.toString(), ruleName, "catalog.json");
+                Files.createDirectories(catalogPath.getParent());
+                File catalogFile = catalogPath.toFile();
+                ruleCatalog = jsonGeneratorFactory.createGenerator(catalogFile, JsonEncoding.UTF8);
+                ruleNamesToCatalogs.put(ruleName, ruleCatalog);
+            }
+            addFileToCatalog(file, artifactsToAttributes, filePath, ruleCatalog);
+        }
     }
 
     /**
@@ -470,150 +470,150 @@ private Path exportFileToSecondaryStorage(AbstractFile file, Supplier<Boolean> c
         return exportFilePath;
     }
 
-//    /**
-//     * Adds an exported file to a catalog.
-//     *
-//     * @param file                  The file.
-//     * @param artifactsToAttributes The artifacts associated with the file.
-//     * @param filePath              The path to the exported file.
-//     * @param catalog               The catalog.
-//     *
-//     * @throws IOException       If there is an error while writing to the
-//     *                           catalog.
-//     * @throws TskCoreExceptiion If there is a problem querying the case
-//     *                           database.
-//     */
-//    private void addFileToCatalog(AbstractFile file, Map<BlackboardArtifact, List<BlackboardAttribute>> artifactsToAttributes, Path filePath, JsonGenerator catalog) throws IOException, TskCoreException {
-//        catalog.writeStartObject();
-//        String md5 = file.getMd5Hash().toUpperCase();
-//        catalog.writeFieldName(md5);
-//        catalog.writeStartObject();
-//        catalog.writeStringField("Filename", filePath.toString());
-//        catalog.writeStringField("Type", file.getMIMEType());
-//        catalog.writeStringField("MD5", md5);
-//        catalog.writeFieldName("File data");
-//        catalog.writeStartObject();
-//
-//        catalog.writeFieldName("Modified");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getMtimeAsDate());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Changed");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getCtimeAsDate());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Accessed");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getAtimeAsDate());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Created");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getCrtimeAsDate());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Extension");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getNameExtension());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Filename");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getName());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Size");
-//        catalog.writeStartArray();
-//        catalog.writeString(Long.toString(file.getSize()));
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Source Path");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getParentPath() + "/" + file.getName());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Flags (Dir)");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getDirFlagAsString());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Flags (Meta)");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getMetaFlagsAsString());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Mode");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getModesAsString());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("User ID");
-//        catalog.writeStartArray();
-//        catalog.writeString(Integer.toString(file.getUid()));
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Group ID");
-//        catalog.writeStartArray();
-//        catalog.writeString(Integer.toString(file.getGid()));
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Meta Addr");
-//        catalog.writeStartArray();
-//        catalog.writeString(Long.toString(file.getMetaAddr()));
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Attr Addr");
-//        catalog.writeStartArray();
-//        catalog.writeString(Long.toString(file.getAttrType().getValue()) + "-" + file.getAttributeId());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Dir Type");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getDirType().getLabel());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Meta Type");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getMetaType().toString());
-//        catalog.writeEndArray();
-//
-//        catalog.writeFieldName("Known");
-//        catalog.writeStartArray();
-//        catalog.writeString(file.getKnown().getName());
-//        catalog.writeEndArray();
-//
-//        catalog.writeEndObject();
-//
-//        for (Map.Entry<BlackboardArtifact, List<BlackboardAttribute>> entry : artifactsToAttributes.entrySet()) {
-//            for (BlackboardAttribute attr : entry.getValue()) {
-//                catalog.writeFieldName(entry.getKey().getArtifactTypeName());
-//                catalog.writeStartObject();
-//                catalog.writeFieldName(attr.getAttributeType().getTypeName());
-//                catalog.writeStartArray();
-//                catalog.writeString(attr.getDisplayString());
-//                catalog.writeEndArray();
-//                catalog.writeEndObject();
-//            }
-//        }
-//
-//        catalog.writeEndObject();
-//        catalog.writeEndObject();
-//    }
-//
-//    /**
-//     * Closes all catalogs opened during export.
-//     *
-//     * @throws IOException If there is a problem closing a catalog.
-//     */
-//    private void closeCatalogs() throws IOException {
-//        masterCatalog.close();
-//        for (JsonGenerator catalog : this.ruleNamesToCatalogs.values()) {
-//            catalog.close();
-//        }
-//
-//    }
+    /**
+     * Adds an exported file to a catalog.
+     *
+     * @param file                  The file.
+     * @param artifactsToAttributes The artifacts associated with the file.
+     * @param filePath              The path to the exported file.
+     * @param catalog               The catalog.
+     *
+     * @throws IOException       If there is an error while writing to the
+     *                           catalog.
+     * @throws TskCoreExceptiion If there is a problem querying the case
+     *                           database.
+     */
+    private void addFileToCatalog(AbstractFile file, Map<BlackboardArtifact, List<BlackboardAttribute>> artifactsToAttributes, Path filePath, JsonGenerator catalog) throws IOException, TskCoreException {
+        catalog.writeStartObject();
+        String md5 = file.getMd5Hash().toUpperCase();
+        catalog.writeFieldName(md5);
+        catalog.writeStartObject();
+        catalog.writeStringField("Filename", filePath.toString());
+        catalog.writeStringField("Type", file.getMIMEType());
+        catalog.writeStringField("MD5", md5);
+        catalog.writeFieldName("File data");
+        catalog.writeStartObject();
+
+        catalog.writeFieldName("Modified");
+        catalog.writeStartArray();
+        catalog.writeString(file.getMtimeAsDate());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Changed");
+        catalog.writeStartArray();
+        catalog.writeString(file.getCtimeAsDate());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Accessed");
+        catalog.writeStartArray();
+        catalog.writeString(file.getAtimeAsDate());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Created");
+        catalog.writeStartArray();
+        catalog.writeString(file.getCrtimeAsDate());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Extension");
+        catalog.writeStartArray();
+        catalog.writeString(file.getNameExtension());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Filename");
+        catalog.writeStartArray();
+        catalog.writeString(file.getName());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Size");
+        catalog.writeStartArray();
+        catalog.writeString(Long.toString(file.getSize()));
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Source Path");
+        catalog.writeStartArray();
+        catalog.writeString(file.getParentPath() + "/" + file.getName());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Flags (Dir)");
+        catalog.writeStartArray();
+        catalog.writeString(file.getDirFlagAsString());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Flags (Meta)");
+        catalog.writeStartArray();
+        catalog.writeString(file.getMetaFlagsAsString());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Mode");
+        catalog.writeStartArray();
+        catalog.writeString(file.getModesAsString());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("User ID");
+        catalog.writeStartArray();
+        catalog.writeString(Integer.toString(file.getUid()));
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Group ID");
+        catalog.writeStartArray();
+        catalog.writeString(Integer.toString(file.getGid()));
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Meta Addr");
+        catalog.writeStartArray();
+        catalog.writeString(Long.toString(file.getMetaAddr()));
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Attr Addr");
+        catalog.writeStartArray();
+        catalog.writeString(Long.toString(file.getAttrType().getValue()) + "-" + file.getAttributeId());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Dir Type");
+        catalog.writeStartArray();
+        catalog.writeString(file.getDirType().getLabel());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Meta Type");
+        catalog.writeStartArray();
+        catalog.writeString(file.getMetaType().toString());
+        catalog.writeEndArray();
+
+        catalog.writeFieldName("Known");
+        catalog.writeStartArray();
+        catalog.writeString(file.getKnown().getName());
+        catalog.writeEndArray();
+
+        catalog.writeEndObject();
+
+        for (Map.Entry<BlackboardArtifact, List<BlackboardAttribute>> entry : artifactsToAttributes.entrySet()) {
+            for (BlackboardAttribute attr : entry.getValue()) {
+                catalog.writeFieldName(entry.getKey().getArtifactTypeName());
+                catalog.writeStartObject();
+                catalog.writeFieldName(attr.getAttributeType().getTypeName());
+                catalog.writeStartArray();
+                catalog.writeString(attr.getDisplayString());
+                catalog.writeEndArray();
+                catalog.writeEndObject();
+            }
+        }
+
+        catalog.writeEndObject();
+        catalog.writeEndObject();
+    }
+
+    /**
+     * Closes all catalogs opened during export.
+     *
+     * @throws IOException If there is a problem closing a catalog.
+     */
+    private void closeCatalogs() throws IOException {
+        masterCatalog.close();
+        for (JsonGenerator catalog : this.ruleNamesToCatalogs.values()) {
+            catalog.close();
+        }
+
+    }
 
     /**
      * Writes the flag files that signal export is completed.
diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml
index 9a6a4d125506848d51c582a45a4e286a9149a6f5..ee86821bd869ae7542a98e5078e05e586f921110 100644
--- a/KeywordSearch/ivy.xml
+++ b/KeywordSearch/ivy.xml
@@ -19,6 +19,7 @@
         
         <!-- Autopsy -->
         <dependency conf="autopsy->default" org="org.apache.solr" name="solr-solrj" rev="4.9.1"/>
+        <dependency conf="autopsy->default" org="commons-lang" name="commons-lang" rev="2.4"/>
         <dependency conf="autopsy->default" org="commons-validator" name="commons-validator" rev="1.5.1"/>
         <dependency conf="autopsy->default" org="com.optimaize.languagedetector" name="language-detector" rev="0.6"/>
         
diff --git a/KeywordSearch/nbproject/project.properties b/KeywordSearch/nbproject/project.properties
index a12c865767816d51056f8b6a28920ea5484d612c..b0c06e183e91b0adb54e5d5838f1fd4129141e5e 100644
--- a/KeywordSearch/nbproject/project.properties
+++ b/KeywordSearch/nbproject/project.properties
@@ -1,6 +1,9 @@
 file.reference.annotations-12.0.jar=release\\modules\\ext\\annotations-12.0.jar
 file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar
+file.reference.commons-collections-3.2.2.jar=release\\modules\\ext\\commons-collections-3.2.2.jar
 file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar
+file.reference.commons-io-2.3.jar=release\\modules\\ext\\commons-io-2.3.jar
+file.reference.commons-lang-2.4.jar=release\\modules\\ext\\commons-lang-2.4.jar
 file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar
 file.reference.commons-validator-1.5.1.jar=release\\modules\\ext\\commons-validator-1.5.1.jar
 file.reference.guava-18.0.jar=release\\modules\\ext\\guava-18.0.jar
diff --git a/KeywordSearch/nbproject/project.xml b/KeywordSearch/nbproject/project.xml
index bc85fdb6e58bd0a55d1fca545385818f6b31923f..c6f056f5a4dee72f4f5d4ea76fd53fe93edf76c4 100644
--- a/KeywordSearch/nbproject/project.xml
+++ b/KeywordSearch/nbproject/project.xml
@@ -263,6 +263,10 @@
                 <runtime-relative-path>ext/commons-validator-1.5.1.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\commons-validator-1.5.1.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-lang-2.4.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\commons-lang-2.4.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/commons-logging-1.2.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\commons-logging-1.2.jar</binary-origin>
@@ -283,6 +287,10 @@
                 <runtime-relative-path>ext/commons-beanutils-1.9.2.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\commons-beanutils-1.9.2.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-io-2.3.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\commons-io-2.3.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/wstx-asl-3.2.7.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\wstx-asl-3.2.7.jar</binary-origin>
@@ -291,6 +299,10 @@
                 <runtime-relative-path>ext/annotations-12.0.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\annotations-12.0.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-collections-3.2.2.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\commons-collections-3.2.2.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/noggit-0.5.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\noggit-0.5.jar</binary-origin>
diff --git a/Tika/nbproject/project.properties b/Tika/nbproject/project.properties
index e44d126d39f3f41b3c9851614f89340ee15b6837..d6b88685c4d748e799aaeee431e3705044510404 100755
--- a/Tika/nbproject/project.properties
+++ b/Tika/nbproject/project.properties
@@ -11,9 +11,12 @@ file.reference.c3p0-0.9.5.4.jar=release\\modules\\ext\\c3p0-0.9.5.4.jar
 file.reference.cdm-4.5.5.jar=release\\modules\\ext\\cdm-4.5.5.jar
 file.reference.checker-qual-2.8.1.jar=release\\modules\\ext\\checker-qual-2.8.1.jar
 file.reference.commons-codec-1.13.jar=release\\modules\\ext\\commons-codec-1.13.jar
+file.reference.commons-collections4-4.4.jar=release\\modules\\ext\\commons-collections4-4.4.jar
 file.reference.commons-compress-1.19.jar=release\\modules\\ext\\commons-compress-1.19.jar
 file.reference.commons-csv-1.7.jar=release\\modules\\ext\\commons-csv-1.7.jar
 file.reference.commons-exec-1.3.jar=release\\modules\\ext\\commons-exec-1.3.jar
+file.reference.commons-io-2.6.jar=release\\modules\\ext\\commons-io-2.6.jar
+file.reference.commons-lang3-3.9.jar=release\\modules\\ext\\commons-lang3-3.9.jar
 file.reference.commons-math3-3.6.1.jar=release\\modules\\ext\\commons-math3-3.6.1.jar
 file.reference.curvesapi-1.06.jar=release\\modules\\ext\\curvesapi-1.06.jar
 file.reference.cxf-core-3.3.4.jar=release\\modules\\ext\\cxf-core-3.3.4.jar
@@ -29,6 +32,7 @@ file.reference.FastInfoset-1.2.16.jar=release\\modules\\ext\\FastInfoset-1.2.16.
 file.reference.fontbox-2.0.17.jar=release\\modules\\ext\\fontbox-2.0.17.jar
 file.reference.geoapi-3.0.1.jar=release\\modules\\ext\\geoapi-3.0.1.jar
 file.reference.grib-4.5.5.jar=release\\modules\\ext\\grib-4.5.5.jar
+file.reference.gson-2.8.6.jar=release\\modules\\ext\\gson-2.8.6.jar
 file.reference.guava-28.1-jre.jar=release\\modules\\ext\\guava-28.1-jre.jar
 file.reference.HikariCP-java7-2.4.13.jar=release\\modules\\ext\\HikariCP-java7-2.4.13.jar
 file.reference.httpclient-4.5.10.jar=release\\modules\\ext\\httpclient-4.5.10.jar
@@ -40,6 +44,9 @@ file.reference.istack-commons-runtime-3.0.8.jar=release\\modules\\ext\\istack-co
 file.reference.j2objc-annotations-1.3.jar=release\\modules\\ext\\j2objc-annotations-1.3.jar
 file.reference.jackcess-3.0.1.jar=release\\modules\\ext\\jackcess-3.0.1.jar
 file.reference.jackcess-encrypt-3.0.0.jar=release\\modules\\ext\\jackcess-encrypt-3.0.0.jar
+file.reference.jackson-annotations-2.10.1.jar=release\\modules\\ext\\jackson-annotations-2.10.1.jar
+file.reference.jackson-core-2.10.1.jar=release\\modules\\ext\\jackson-core-2.10.1.jar
+file.reference.jackson-databind-2.10.1.jar=release\\modules\\ext\\jackson-databind-2.10.1.jar
 file.reference.jai-imageio-core-1.4.0.jar=release\\modules\\ext\\jai-imageio-core-1.4.0.jar
 file.reference.jakarta.activation-1.2.1.jar=release\\modules\\ext\\jakarta.activation-1.2.1.jar
 file.reference.jakarta.ws.rs-api-2.1.5.jar=release\\modules\\ext\\jakarta.ws.rs-api-2.1.5.jar
diff --git a/Tika/nbproject/project.xml b/Tika/nbproject/project.xml
index 955f2811c8ecc25049e10ffac602244930055439..7cd7a69bbf490e4d89e02bfd1c0c31941eacf6df 100755
--- a/Tika/nbproject/project.xml
+++ b/Tika/nbproject/project.xml
@@ -122,6 +122,10 @@
                 <runtime-relative-path>ext/xmlbeans-3.1.0.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\xmlbeans-3.1.0.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/gson-2.8.6.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\gson-2.8.6.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/cdm-4.5.5.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\cdm-4.5.5.jar</binary-origin>
@@ -270,6 +274,10 @@
                 <runtime-relative-path>ext/jaxb-runtime-2.3.2.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\jaxb-runtime-2.3.2.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/jackson-core-2.10.1.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\jackson-core-2.10.1.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/opennlp-tools-1.9.1.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\opennlp-tools-1.9.1.jar</binary-origin>
@@ -342,6 +350,10 @@
                 <runtime-relative-path>ext/jempbox-1.8.16.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\jempbox-1.8.16.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/jackson-annotations-2.10.1.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\jackson-annotations-2.10.1.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/httpmime-4.5.10.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\httpmime-4.5.10.jar</binary-origin>
@@ -426,6 +438,10 @@
                 <runtime-relative-path>ext/bcmail-jdk15on-1.64.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\bcmail-jdk15on-1.64.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-io-2.6.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\commons-io-2.6.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/cxf-rt-rs-client-3.3.4.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\cxf-rt-rs-client-3.3.4.jar</binary-origin>
@@ -494,10 +510,18 @@
                 <runtime-relative-path>ext/jcip-annotations-1.0.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\jcip-annotations-1.0.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-collections4-4.4.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\commons-collections4-4.4.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/cxf-core-3.3.4.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\cxf-core-3.3.4.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/jackson-databind-2.10.1.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\jackson-databind-2.10.1.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/slf4j-api-1.7.28.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\slf4j-api-1.7.28.jar</binary-origin>
@@ -506,6 +530,10 @@
                 <runtime-relative-path>ext/ehcache-core-2.6.2.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\ehcache-core-2.6.2.jar</binary-origin>
             </class-path-extension>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-lang3-3.9.jar</runtime-relative-path>
+                <binary-origin>release\modules\ext\commons-lang3-3.9.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/dec-0.1.2.jar</runtime-relative-path>
                 <binary-origin>release\modules\ext\dec-0.1.2.jar</binary-origin>
diff --git a/thunderbirdparser/ivy.xml b/thunderbirdparser/ivy.xml
index 6dd9ffd6b1a938e86d72c71077c62421cd651b4e..d2833c64c1bc0161230ce3f2bf197b20701e29b6 100644
--- a/thunderbirdparser/ivy.xml
+++ b/thunderbirdparser/ivy.xml
@@ -7,6 +7,7 @@
      
     </configurations>
     <dependencies>
+        <dependency conf="autopsy->default" org="org.apache.commons" name="commons-lang3" rev="3.8.1"/>
         <dependency conf="autopsy->default" org="org.apache.james" name="apache-mime4j-core" rev="0.8.0"/>
         <dependency conf="autopsy->default" org="org.apache.james" name="apache-mime4j-dom" rev="0.8.0"/>
         <dependency conf="autopsy->default" org="org.apache.james" name="apache-mime4j-mbox-iterator" rev="0.8.0"/>
diff --git a/thunderbirdparser/nbproject/project.properties b/thunderbirdparser/nbproject/project.properties
index 18a61ec9adf1e0fef3a7bd836be282171406ab2d..ea9d0786ebc6fce833fea006817050b3f2e83897 100644
--- a/thunderbirdparser/nbproject/project.properties
+++ b/thunderbirdparser/nbproject/project.properties
@@ -1,6 +1,7 @@
 file.reference.apache-mime4j-core-0.8.0-SNAPSHOT.jar=release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar
 file.reference.apache-mime4j-dom-0.8.0-SNAPSHOT.jar=release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar
 file.reference.apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar=release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar
+file.reference.commons-lang3-3.8.1.jar=release/modules/ext/commons-lang3-3.8.1.jar
 file.reference.apache-mime4j-core-0.8.0.jar=release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar
 file.reference.apache-mime4j-dom-0.8.0.jar=release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar
 file.reference.apache-mime4j-mbox-iterator-0.8.0.jar=release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar
diff --git a/thunderbirdparser/nbproject/project.xml b/thunderbirdparser/nbproject/project.xml
index 31276d7838026cfe09db454bb537a66632bc37a7..b4d9ca8cbfeed2614ead6c8667fc28d308f890a6 100644
--- a/thunderbirdparser/nbproject/project.xml
+++ b/thunderbirdparser/nbproject/project.xml
@@ -57,15 +57,6 @@
                         <specification-version>10.22</specification-version>
                     </run-dependency>
                 </dependency>
-                <dependency>
-                    <code-name-base>org.sleuthkit.autopsy.corelibs</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>3</release-version>
-                        <specification-version>1.4</specification-version>
-                    </run-dependency>
-                </dependency>
                 <dependency>
                     <code-name-base>org.sleuthkit.autopsy.keywordsearch</code-name-base>
                     <build-prerequisite/>
@@ -77,6 +68,10 @@
                 </dependency>
             </module-dependencies>
             <public-packages/>
+            <class-path-extension>
+                <runtime-relative-path>ext/commons-lang3-3.8.1.jar</runtime-relative-path>
+                <binary-origin>release/modules/ext/commons-lang3-3.8.1.jar</binary-origin>
+            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar</runtime-relative-path>
                 <binary-origin>release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar</binary-origin>