Index: /java/installer2/src/net/oni2/aeinstaller/AEInstaller.properties
===================================================================
--- /java/installer2/src/net/oni2/aeinstaller/AEInstaller.properties	(revision 1015)
+++ /java/installer2/src/net/oni2/aeinstaller/AEInstaller.properties	(revision 1016)
@@ -1,2 +1,2 @@
 appname=AE Installer 2
-appversion=.18
+appversion=.19
Index: /java/installer2/src/net/oni2/aeinstaller/backend/oni/management/Installer.java
===================================================================
--- /java/installer2/src/net/oni2/aeinstaller/backend/oni/management/Installer.java	(revision 1015)
+++ /java/installer2/src/net/oni2/aeinstaller/backend/oni/management/Installer.java	(revision 1016)
@@ -29,4 +29,6 @@
 import net.oni2.aeinstaller.backend.oni.PersistDat;
 import net.oni2.aeinstaller.backend.oni.XMLTools;
+import net.oni2.aeinstaller.backend.oni.management.tools.ToolFileIterator;
+import net.oni2.aeinstaller.backend.oni.management.tools.ToolFileIteratorEntry;
 import net.oni2.aeinstaller.backend.oni.management.tools.ToolInstallationList;
 import net.oni2.aeinstaller.backend.packages.EBSLInstallType;
@@ -247,4 +249,6 @@
 		combineBSLFolders(mods, listener, log);
 
+		copyPlainFiles (log, mods, listener);
+		
 		copyVideos(log);
 
@@ -600,4 +604,40 @@
 	}
 
+	private static void copyPlainFiles(final Logger log, TreeSet<Package> mods, InstallProgressListener listener) {
+		listener.installProgressUpdate(97, 100, "Copying plain files");
+		log.println();
+		log.println("Copying plain files from mods");
+
+		for (Package p : mods) {
+			ToolFileIterator.iteratePlatformToolFiles(p,
+					new ToolFileIteratorEntry() {
+						@Override
+						public void toolFile(File source, File target) {
+							copyPlainFile(source, target, log);
+						}
+					});
+		}
+	}
+
+	private static void copyPlainFile(File src, File target, Logger log) {
+		try {
+			if (!src.getAbsolutePath().toLowerCase().contains("gamedatafolder")) {
+				File targetFile = CaseInsensitiveFile.getCaseInsensitiveFile(
+						target.getParentFile(), target.getName());
+
+				// Case mismatch?
+				if (!targetFile.getName().equals(src.getName()))
+					targetFile.delete();
+
+				FileUtils.copyFile(src, target);
+			} else {
+				log.printlnFmt("Not copying \"%s\": Not within GameDataFolder", src.getPath());
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+
 	private static void unlockLevels(TreeSet<Integer> unlockLevels, Logger log) {
 		File dat = new File(Paths.getEditionBasePath(), "persist.dat");
