diff --git a/core/src/main/java/com/seibel/lod/core/datatype/DataSourceLoader.java b/core/src/main/java/com/seibel/lod/core/datatype/DataSourceLoader.java
index 9f1bc8b80..b65da2bec 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/DataSourceLoader.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/DataSourceLoader.java
@@ -2,7 +2,7 @@ package com.seibel.lod.core.datatype;
import com.google.common.collect.HashMultimap;
import com.seibel.lod.core.level.ILevel;
-import com.seibel.lod.core.io.datafile.DataMetaFile;
+import com.seibel.lod.core.file.datafile.DataMetaFile;
import java.io.IOException;
import java.io.InputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/LodDataSource.java b/core/src/main/java/com/seibel/lod/core/datatype/LodDataSource.java
index 3c5cfd4f4..44defc1a8 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/LodDataSource.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/LodDataSource.java
@@ -3,7 +3,7 @@ package com.seibel.lod.core.datatype;
import com.seibel.lod.core.datatype.full.ChunkSizedData;
import com.seibel.lod.core.level.ILevel;
import com.seibel.lod.core.pos.DhSectionPos;
-import com.seibel.lod.core.io.datafile.DataMetaFile;
+import com.seibel.lod.core.file.datafile.DataMetaFile;
import java.io.IOException;
import java.io.OutputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/LodRenderSource.java b/core/src/main/java/com/seibel/lod/core/datatype/LodRenderSource.java
index 040e96e3f..aa0421126 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/LodRenderSource.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/LodRenderSource.java
@@ -5,7 +5,7 @@ import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.pos.DhSectionPos;
import com.seibel.lod.core.render.LodQuadTree;
import com.seibel.lod.core.render.RenderBuffer;
-import com.seibel.lod.core.io.renderfile.RenderMetaFile;
+import com.seibel.lod.core.file.renderfile.RenderMetaFile;
import java.io.IOException;
import java.io.OutputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/PlaceHolderRenderSource.java b/core/src/main/java/com/seibel/lod/core/datatype/PlaceHolderRenderSource.java
index 7ac6f5bd9..029bb755e 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/PlaceHolderRenderSource.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/PlaceHolderRenderSource.java
@@ -5,7 +5,7 @@ import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.pos.DhSectionPos;
import com.seibel.lod.core.render.LodQuadTree;
import com.seibel.lod.core.render.RenderBuffer;
-import com.seibel.lod.core.io.renderfile.RenderMetaFile;
+import com.seibel.lod.core.file.renderfile.RenderMetaFile;
import java.io.IOException;
import java.io.OutputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/RenderSourceLoader.java b/core/src/main/java/com/seibel/lod/core/datatype/RenderSourceLoader.java
index 7173beda2..88cabd549 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/RenderSourceLoader.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/RenderSourceLoader.java
@@ -3,7 +3,7 @@ package com.seibel.lod.core.datatype;
import com.google.common.collect.HashMultimap;
import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.level.ILevel;
-import com.seibel.lod.core.io.renderfile.RenderMetaFile;
+import com.seibel.lod.core.file.renderfile.RenderMetaFile;
import java.io.IOException;
import java.io.InputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/column/ColumnRenderLoader.java b/core/src/main/java/com/seibel/lod/core/datatype/column/ColumnRenderLoader.java
index 8f104f559..a274ab845 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/column/ColumnRenderLoader.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/column/ColumnRenderLoader.java
@@ -8,7 +8,7 @@ import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.datatype.LodRenderSource;
import com.seibel.lod.core.datatype.RenderSourceLoader;
import com.seibel.lod.core.level.ILevel;
-import com.seibel.lod.core.io.renderfile.RenderMetaFile;
+import com.seibel.lod.core.file.renderfile.RenderMetaFile;
import com.seibel.lod.core.util.LodUtil;
import java.io.DataInputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/column/ColumnRenderSource.java b/core/src/main/java/com/seibel/lod/core/datatype/column/ColumnRenderSource.java
index 29bf6d5bb..2f80e0954 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/column/ColumnRenderSource.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/column/ColumnRenderSource.java
@@ -8,7 +8,7 @@ import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.pos.DhSectionPos;
import com.seibel.lod.core.render.RenderBuffer;
import com.seibel.lod.core.render.renderer.LodRenderer;
-import com.seibel.lod.core.io.renderfile.RenderMetaFile;
+import com.seibel.lod.core.file.renderfile.RenderMetaFile;
import com.seibel.lod.core.enums.ELodDirection;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.level.ILevel;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataDownSampler.java b/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataDownSampler.java
index dbd27e0ee..3f056ce35 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataDownSampler.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataDownSampler.java
@@ -4,7 +4,7 @@ import com.seibel.lod.core.datatype.LodDataSource;
import com.seibel.lod.core.datatype.full.accessor.SingleFullArrayView;
import com.seibel.lod.core.pos.DhLodPos;
import com.seibel.lod.core.pos.DhSectionPos;
-import com.seibel.lod.core.io.datafile.IDataSourceProvider;
+import com.seibel.lod.core.file.datafile.IDataSourceProvider;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.util.LodUtil;
import org.apache.logging.log4j.Logger;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataLoader.java b/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataLoader.java
index 5bbfbd2c4..54ae8e318 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataLoader.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataLoader.java
@@ -3,7 +3,7 @@ package com.seibel.lod.core.datatype.full;
import com.seibel.lod.core.datatype.DataSourceLoader;
import com.seibel.lod.core.datatype.LodDataSource;
import com.seibel.lod.core.level.ILevel;
-import com.seibel.lod.core.io.datafile.DataMetaFile;
+import com.seibel.lod.core.file.datafile.DataMetaFile;
import java.io.IOException;
import java.io.InputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataSource.java b/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataSource.java
index 713671c7f..71b9b04bb 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataSource.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/full/FullDataSource.java
@@ -5,7 +5,7 @@ import com.seibel.lod.core.datatype.full.accessor.SingleFullArrayView;
import com.seibel.lod.core.level.ILevel;
import com.seibel.lod.core.pos.DhBlockPos2D;
import com.seibel.lod.core.pos.DhLodPos;
-import com.seibel.lod.core.io.datafile.DataMetaFile;
+import com.seibel.lod.core.file.datafile.DataMetaFile;
import com.seibel.lod.core.datatype.LodDataSource;
import com.seibel.lod.core.pos.DhSectionPos;
import com.seibel.lod.core.util.objects.UnclosableInputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/full/SparseDataLoader.java b/core/src/main/java/com/seibel/lod/core/datatype/full/SparseDataLoader.java
index 5f6d5cc8d..0baf0c2e1 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/full/SparseDataLoader.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/full/SparseDataLoader.java
@@ -3,7 +3,7 @@ package com.seibel.lod.core.datatype.full;
import com.seibel.lod.core.datatype.DataSourceLoader;
import com.seibel.lod.core.datatype.LodDataSource;
import com.seibel.lod.core.level.ILevel;
-import com.seibel.lod.core.io.datafile.DataMetaFile;
+import com.seibel.lod.core.file.datafile.DataMetaFile;
import java.io.IOException;
import java.io.InputStream;
diff --git a/core/src/main/java/com/seibel/lod/core/datatype/full/SparseDataSource.java b/core/src/main/java/com/seibel/lod/core/datatype/full/SparseDataSource.java
index 4be22c326..c8a65af89 100644
--- a/core/src/main/java/com/seibel/lod/core/datatype/full/SparseDataSource.java
+++ b/core/src/main/java/com/seibel/lod/core/datatype/full/SparseDataSource.java
@@ -6,7 +6,7 @@ import com.seibel.lod.core.datatype.full.accessor.SingleFullArrayView;
import com.seibel.lod.core.level.ILevel;
import com.seibel.lod.core.pos.DhLodPos;
import com.seibel.lod.core.pos.DhSectionPos;
-import com.seibel.lod.core.io.datafile.DataMetaFile;
+import com.seibel.lod.core.file.datafile.DataMetaFile;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.util.LodUtil;
import org.apache.logging.log4j.Logger;
diff --git a/core/src/main/java/com/seibel/lod/core/io/LevelToFileMatcher.java b/core/src/main/java/com/seibel/lod/core/file/LevelToFileMatcher.java
similarity index 99%
rename from core/src/main/java/com/seibel/lod/core/io/LevelToFileMatcher.java
rename to core/src/main/java/com/seibel/lod/core/file/LevelToFileMatcher.java
index b0adcb15c..7a24a87e0 100644
--- a/core/src/main/java/com/seibel/lod/core/io/LevelToFileMatcher.java
+++ b/core/src/main/java/com/seibel/lod/core/file/LevelToFileMatcher.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io;
+package com.seibel.lod.core.file;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
diff --git a/core/src/main/java/com/seibel/lod/core/io/MetaFile.java b/core/src/main/java/com/seibel/lod/core/file/MetaFile.java
similarity index 99%
rename from core/src/main/java/com/seibel/lod/core/io/MetaFile.java
rename to core/src/main/java/com/seibel/lod/core/file/MetaFile.java
index 84dbef08d..ee4f247d7 100644
--- a/core/src/main/java/com/seibel/lod/core/io/MetaFile.java
+++ b/core/src/main/java/com/seibel/lod/core/file/MetaFile.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io;
+package com.seibel.lod.core.file;
import java.io.*;
import java.nio.ByteBuffer;
diff --git a/core/src/main/java/com/seibel/lod/core/io/PlayerData.java b/core/src/main/java/com/seibel/lod/core/file/PlayerData.java
similarity index 99%
rename from core/src/main/java/com/seibel/lod/core/io/PlayerData.java
rename to core/src/main/java/com/seibel/lod/core/file/PlayerData.java
index 48feb3e4d..055c70dc4 100644
--- a/core/src/main/java/com/seibel/lod/core/io/PlayerData.java
+++ b/core/src/main/java/com/seibel/lod/core/file/PlayerData.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.io;
+package com.seibel.lod.core.file;
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
diff --git a/core/src/main/java/com/seibel/lod/core/io/SubDimCompare.java b/core/src/main/java/com/seibel/lod/core/file/SubDimCompare.java
similarity index 98%
rename from core/src/main/java/com/seibel/lod/core/io/SubDimCompare.java
rename to core/src/main/java/com/seibel/lod/core/file/SubDimCompare.java
index fce8c2da5..e66feff80 100644
--- a/core/src/main/java/com/seibel/lod/core/io/SubDimCompare.java
+++ b/core/src/main/java/com/seibel/lod/core/file/SubDimCompare.java
@@ -17,7 +17,7 @@
* along with this program. If not, see .
*/
-package com.seibel.lod.core.io;
+package com.seibel.lod.core.file;
import com.seibel.lod.core.config.Config;
import org.jetbrains.annotations.NotNull;
diff --git a/core/src/main/java/com/seibel/lod/core/io/datafile/DataFileHandler.java b/core/src/main/java/com/seibel/lod/core/file/datafile/DataFileHandler.java
similarity index 99%
rename from core/src/main/java/com/seibel/lod/core/io/datafile/DataFileHandler.java
rename to core/src/main/java/com/seibel/lod/core/file/datafile/DataFileHandler.java
index d91a816d2..f68db7c4e 100644
--- a/core/src/main/java/com/seibel/lod/core/io/datafile/DataFileHandler.java
+++ b/core/src/main/java/com/seibel/lod/core/file/datafile/DataFileHandler.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.datafile;
+package com.seibel.lod.core.file.datafile;
import com.google.common.collect.HashMultimap;
import com.seibel.lod.core.datatype.LodDataSource;
diff --git a/core/src/main/java/com/seibel/lod/core/io/datafile/DataMetaFile.java b/core/src/main/java/com/seibel/lod/core/file/datafile/DataMetaFile.java
similarity index 99%
rename from core/src/main/java/com/seibel/lod/core/io/datafile/DataMetaFile.java
rename to core/src/main/java/com/seibel/lod/core/file/datafile/DataMetaFile.java
index cf327e0c1..377dacda0 100644
--- a/core/src/main/java/com/seibel/lod/core/io/datafile/DataMetaFile.java
+++ b/core/src/main/java/com/seibel/lod/core/file/datafile/DataMetaFile.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.datafile;
+package com.seibel.lod.core.file.datafile;
import java.io.*;
import java.lang.ref.*;
@@ -13,7 +13,7 @@ import com.seibel.lod.core.datatype.LodDataSource;
import com.seibel.lod.core.datatype.DataSourceLoader;
import com.seibel.lod.core.datatype.full.ChunkSizedData;
import com.seibel.lod.core.pos.DhLodPos;
-import com.seibel.lod.core.io.MetaFile;
+import com.seibel.lod.core.file.MetaFile;
import com.seibel.lod.core.level.ILevel;
import com.seibel.lod.core.pos.DhSectionPos;
import com.seibel.lod.core.logging.DhLoggerBuilder;
diff --git a/core/src/main/java/com/seibel/lod/core/io/datafile/GeneratedDataFileHandler.java b/core/src/main/java/com/seibel/lod/core/file/datafile/GeneratedDataFileHandler.java
similarity index 99%
rename from core/src/main/java/com/seibel/lod/core/io/datafile/GeneratedDataFileHandler.java
rename to core/src/main/java/com/seibel/lod/core/file/datafile/GeneratedDataFileHandler.java
index 4d9b53b0f..13dcb1aae 100644
--- a/core/src/main/java/com/seibel/lod/core/io/datafile/GeneratedDataFileHandler.java
+++ b/core/src/main/java/com/seibel/lod/core/file/datafile/GeneratedDataFileHandler.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.datafile;
+package com.seibel.lod.core.file.datafile;
import com.seibel.lod.core.datatype.LodDataSource;
import com.seibel.lod.core.datatype.full.ChunkSizedData;
diff --git a/core/src/main/java/com/seibel/lod/core/io/datafile/IDataSourceProvider.java b/core/src/main/java/com/seibel/lod/core/file/datafile/IDataSourceProvider.java
similarity index 96%
rename from core/src/main/java/com/seibel/lod/core/io/datafile/IDataSourceProvider.java
rename to core/src/main/java/com/seibel/lod/core/file/datafile/IDataSourceProvider.java
index c5c947624..cd1c3ab79 100644
--- a/core/src/main/java/com/seibel/lod/core/io/datafile/IDataSourceProvider.java
+++ b/core/src/main/java/com/seibel/lod/core/file/datafile/IDataSourceProvider.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.datafile;
+package com.seibel.lod.core.file.datafile;
import com.seibel.lod.core.datatype.LodDataSource;
import com.seibel.lod.core.datatype.full.ChunkSizedData;
diff --git a/core/src/main/java/com/seibel/lod/core/io/datafile/RemoteDataFileHandler.java b/core/src/main/java/com/seibel/lod/core/file/datafile/RemoteDataFileHandler.java
similarity index 84%
rename from core/src/main/java/com/seibel/lod/core/io/datafile/RemoteDataFileHandler.java
rename to core/src/main/java/com/seibel/lod/core/file/datafile/RemoteDataFileHandler.java
index 1438e75ea..f623b290d 100644
--- a/core/src/main/java/com/seibel/lod/core/io/datafile/RemoteDataFileHandler.java
+++ b/core/src/main/java/com/seibel/lod/core/file/datafile/RemoteDataFileHandler.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.datafile;
+package com.seibel.lod.core.file.datafile;
import com.seibel.lod.core.level.ILevel;
diff --git a/core/src/main/java/com/seibel/lod/core/io/renderfile/IRenderSourceProvider.java b/core/src/main/java/com/seibel/lod/core/file/renderfile/IRenderSourceProvider.java
similarity index 93%
rename from core/src/main/java/com/seibel/lod/core/io/renderfile/IRenderSourceProvider.java
rename to core/src/main/java/com/seibel/lod/core/file/renderfile/IRenderSourceProvider.java
index 4d88cf937..dc57f8d43 100644
--- a/core/src/main/java/com/seibel/lod/core/io/renderfile/IRenderSourceProvider.java
+++ b/core/src/main/java/com/seibel/lod/core/file/renderfile/IRenderSourceProvider.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.renderfile;
+package com.seibel.lod.core.file.renderfile;
import com.seibel.lod.core.datatype.LodRenderSource;
import com.seibel.lod.core.datatype.full.ChunkSizedData;
diff --git a/core/src/main/java/com/seibel/lod/core/io/renderfile/RenderFileHandler.java b/core/src/main/java/com/seibel/lod/core/file/renderfile/RenderFileHandler.java
similarity index 99%
rename from core/src/main/java/com/seibel/lod/core/io/renderfile/RenderFileHandler.java
rename to core/src/main/java/com/seibel/lod/core/file/renderfile/RenderFileHandler.java
index a6ccbfa74..2da727b50 100644
--- a/core/src/main/java/com/seibel/lod/core/io/renderfile/RenderFileHandler.java
+++ b/core/src/main/java/com/seibel/lod/core/file/renderfile/RenderFileHandler.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.renderfile;
+package com.seibel.lod.core.file.renderfile;
import com.google.common.collect.HashMultimap;
import com.seibel.lod.core.datatype.LodDataSource;
@@ -8,9 +8,9 @@ import com.seibel.lod.core.datatype.RenderSourceLoader;
import com.seibel.lod.core.datatype.column.ColumnRenderSource;
import com.seibel.lod.core.datatype.full.ChunkSizedData;
import com.seibel.lod.core.datatype.transform.DataRenderTransformer;
+import com.seibel.lod.core.file.datafile.IDataSourceProvider;
import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.pos.DhLodPos;
-import com.seibel.lod.core.io.datafile.IDataSourceProvider;
import com.seibel.lod.core.pos.DhSectionPos;
import com.seibel.lod.core.util.objects.UncheckedInterruptedException;
import com.seibel.lod.core.config.Config;
diff --git a/core/src/main/java/com/seibel/lod/core/io/renderfile/RenderMetaFile.java b/core/src/main/java/com/seibel/lod/core/file/renderfile/RenderMetaFile.java
similarity index 99%
rename from core/src/main/java/com/seibel/lod/core/io/renderfile/RenderMetaFile.java
rename to core/src/main/java/com/seibel/lod/core/file/renderfile/RenderMetaFile.java
index d0ea51643..3ec4eaf42 100644
--- a/core/src/main/java/com/seibel/lod/core/io/renderfile/RenderMetaFile.java
+++ b/core/src/main/java/com/seibel/lod/core/file/renderfile/RenderMetaFile.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.renderfile;
+package com.seibel.lod.core.file.renderfile;
import com.seibel.lod.core.datatype.LodDataSource;
import com.seibel.lod.core.datatype.LodRenderSource;
@@ -7,7 +7,7 @@ import com.seibel.lod.core.datatype.full.ChunkSizedData;
import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.level.ILevel;
import com.seibel.lod.core.pos.DhLodPos;
-import com.seibel.lod.core.io.MetaFile;
+import com.seibel.lod.core.file.MetaFile;
import com.seibel.lod.core.pos.DhSectionPos;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.util.LodUtil;
diff --git a/core/src/main/java/com/seibel/lod/core/io/structure/ClientOnlySaveStructure.java b/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java
similarity index 98%
rename from core/src/main/java/com/seibel/lod/core/io/structure/ClientOnlySaveStructure.java
rename to core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java
index cda4b4943..a5b3959ac 100644
--- a/core/src/main/java/com/seibel/lod/core/io/structure/ClientOnlySaveStructure.java
+++ b/core/src/main/java/com/seibel/lod/core/file/structure/ClientOnlySaveStructure.java
@@ -1,6 +1,6 @@
-package com.seibel.lod.core.io.structure;
+package com.seibel.lod.core.file.structure;
-import com.seibel.lod.core.io.LevelToFileMatcher;
+import com.seibel.lod.core.file.LevelToFileMatcher;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.enums.config.EServerFolderNameMode;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
diff --git a/core/src/main/java/com/seibel/lod/core/io/structure/LocalSaveStructure.java b/core/src/main/java/com/seibel/lod/core/file/structure/LocalSaveStructure.java
similarity index 97%
rename from core/src/main/java/com/seibel/lod/core/io/structure/LocalSaveStructure.java
rename to core/src/main/java/com/seibel/lod/core/file/structure/LocalSaveStructure.java
index 8d7eeb612..f50aae4db 100644
--- a/core/src/main/java/com/seibel/lod/core/io/structure/LocalSaveStructure.java
+++ b/core/src/main/java/com/seibel/lod/core/file/structure/LocalSaveStructure.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.structure;
+package com.seibel.lod.core.file.structure;
import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.lod.core.wrapperInterfaces.world.IServerLevelWrapper;
diff --git a/core/src/main/java/com/seibel/lod/core/io/structure/SaveStructure.java b/core/src/main/java/com/seibel/lod/core/file/structure/SaveStructure.java
similarity index 93%
rename from core/src/main/java/com/seibel/lod/core/io/structure/SaveStructure.java
rename to core/src/main/java/com/seibel/lod/core/file/structure/SaveStructure.java
index 8cda20962..b9aa57ae1 100644
--- a/core/src/main/java/com/seibel/lod/core/io/structure/SaveStructure.java
+++ b/core/src/main/java/com/seibel/lod/core/file/structure/SaveStructure.java
@@ -1,4 +1,4 @@
-package com.seibel.lod.core.io.structure;
+package com.seibel.lod.core.file.structure;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
diff --git a/core/src/main/java/com/seibel/lod/core/level/DhClientLevel.java b/core/src/main/java/com/seibel/lod/core/level/DhClientLevel.java
index f2fb89a29..3dcb3cf46 100644
--- a/core/src/main/java/com/seibel/lod/core/level/DhClientLevel.java
+++ b/core/src/main/java/com/seibel/lod/core/level/DhClientLevel.java
@@ -2,11 +2,11 @@ package com.seibel.lod.core.level;
import com.seibel.lod.core.render.LodQuadTree;
import com.seibel.lod.core.util.FileScanUtil;
-import com.seibel.lod.core.io.datafile.RemoteDataFileHandler;
-import com.seibel.lod.core.io.renderfile.RenderFileHandler;
+import com.seibel.lod.core.file.datafile.RemoteDataFileHandler;
+import com.seibel.lod.core.file.renderfile.RenderFileHandler;
import com.seibel.lod.core.pos.DhBlockPos2D;
import com.seibel.lod.core.render.RenderBufferHandler;
-import com.seibel.lod.core.io.structure.ClientOnlySaveStructure;
+import com.seibel.lod.core.file.structure.ClientOnlySaveStructure;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
import com.seibel.lod.core.logging.DhLoggerBuilder;
diff --git a/core/src/main/java/com/seibel/lod/core/level/DhClientServerLevel.java b/core/src/main/java/com/seibel/lod/core/level/DhClientServerLevel.java
index a7cdf1fcd..f5d7217ea 100644
--- a/core/src/main/java/com/seibel/lod/core/level/DhClientServerLevel.java
+++ b/core/src/main/java/com/seibel/lod/core/level/DhClientServerLevel.java
@@ -2,12 +2,12 @@ package com.seibel.lod.core.level;
import com.seibel.lod.core.generation.GenerationQueue;
import com.seibel.lod.core.render.LodQuadTree;
-import com.seibel.lod.core.io.datafile.GeneratedDataFileHandler;
+import com.seibel.lod.core.file.datafile.GeneratedDataFileHandler;
import com.seibel.lod.core.util.FileScanUtil;
-import com.seibel.lod.core.io.renderfile.RenderFileHandler;
+import com.seibel.lod.core.file.renderfile.RenderFileHandler;
import com.seibel.lod.core.pos.DhBlockPos2D;
import com.seibel.lod.core.render.RenderBufferHandler;
-import com.seibel.lod.core.io.structure.LocalSaveStructure;
+import com.seibel.lod.core.file.structure.LocalSaveStructure;
import com.seibel.lod.core.generation.BatchGenerator;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.dependencyInjection.SingletonInjector;
diff --git a/core/src/main/java/com/seibel/lod/core/level/DhServerLevel.java b/core/src/main/java/com/seibel/lod/core/level/DhServerLevel.java
index 8c563ef1d..2ea33237a 100644
--- a/core/src/main/java/com/seibel/lod/core/level/DhServerLevel.java
+++ b/core/src/main/java/com/seibel/lod/core/level/DhServerLevel.java
@@ -1,8 +1,8 @@
package com.seibel.lod.core.level;
import com.seibel.lod.core.util.FileScanUtil;
-import com.seibel.lod.core.io.datafile.DataFileHandler;
-import com.seibel.lod.core.io.structure.LocalSaveStructure;
+import com.seibel.lod.core.file.datafile.DataFileHandler;
+import com.seibel.lod.core.file.structure.LocalSaveStructure;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.lod.core.wrapperInterfaces.world.IServerLevelWrapper;
diff --git a/core/src/main/java/com/seibel/lod/core/render/LodQuadTree.java b/core/src/main/java/com/seibel/lod/core/render/LodQuadTree.java
index 98968892e..9442af5b0 100644
--- a/core/src/main/java/com/seibel/lod/core/render/LodQuadTree.java
+++ b/core/src/main/java/com/seibel/lod/core/render/LodQuadTree.java
@@ -4,7 +4,7 @@ import com.seibel.lod.core.datatype.column.ColumnRenderSource;
import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.pos.DhBlockPos2D;
import com.seibel.lod.core.pos.DhSectionPos;
-import com.seibel.lod.core.io.renderfile.IRenderSourceProvider;
+import com.seibel.lod.core.file.renderfile.IRenderSourceProvider;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.pos.Pos2D;
import com.seibel.lod.core.util.DetailDistanceUtil;
diff --git a/core/src/main/java/com/seibel/lod/core/render/LodRenderSection.java b/core/src/main/java/com/seibel/lod/core/render/LodRenderSection.java
index d0ce8d525..5eed8b4a9 100644
--- a/core/src/main/java/com/seibel/lod/core/render/LodRenderSection.java
+++ b/core/src/main/java/com/seibel/lod/core/render/LodRenderSection.java
@@ -3,7 +3,7 @@ package com.seibel.lod.core.render;
import com.seibel.lod.core.level.IClientLevel;
import com.seibel.lod.core.pos.DhSectionPos;
import com.seibel.lod.core.datatype.LodRenderSource;
-import com.seibel.lod.core.io.renderfile.IRenderSourceProvider;
+import com.seibel.lod.core.file.renderfile.IRenderSourceProvider;
import java.util.concurrent.CompletableFuture;
diff --git a/core/src/main/java/com/seibel/lod/core/util/FileScanUtil.java b/core/src/main/java/com/seibel/lod/core/util/FileScanUtil.java
index 600a43270..4abb5836f 100644
--- a/core/src/main/java/com/seibel/lod/core/util/FileScanUtil.java
+++ b/core/src/main/java/com/seibel/lod/core/util/FileScanUtil.java
@@ -1,8 +1,8 @@
package com.seibel.lod.core.util;
-import com.seibel.lod.core.io.datafile.IDataSourceProvider;
-import com.seibel.lod.core.io.renderfile.IRenderSourceProvider;
-import com.seibel.lod.core.io.structure.SaveStructure;
+import com.seibel.lod.core.file.datafile.IDataSourceProvider;
+import com.seibel.lod.core.file.renderfile.IRenderSourceProvider;
+import com.seibel.lod.core.file.structure.SaveStructure;
import com.seibel.lod.core.logging.DhLoggerBuilder;
import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
import org.apache.logging.log4j.Logger;
diff --git a/core/src/main/java/com/seibel/lod/core/world/DhClientServerWorld.java b/core/src/main/java/com/seibel/lod/core/world/DhClientServerWorld.java
index be706da31..c75902261 100644
--- a/core/src/main/java/com/seibel/lod/core/world/DhClientServerWorld.java
+++ b/core/src/main/java/com/seibel/lod/core/world/DhClientServerWorld.java
@@ -2,7 +2,7 @@ package com.seibel.lod.core.world;
import com.seibel.lod.core.level.DhClientServerLevel;
import com.seibel.lod.core.level.ILevel;
-import com.seibel.lod.core.io.structure.LocalSaveStructure;
+import com.seibel.lod.core.file.structure.LocalSaveStructure;
import com.seibel.lod.core.logging.f3.F3Screen;
import com.seibel.lod.core.util.objects.EventLoop;
import com.seibel.lod.core.util.LodUtil;
diff --git a/core/src/main/java/com/seibel/lod/core/world/DhClientWorld.java b/core/src/main/java/com/seibel/lod/core/world/DhClientWorld.java
index aadad37ac..3901ff416 100644
--- a/core/src/main/java/com/seibel/lod/core/world/DhClientWorld.java
+++ b/core/src/main/java/com/seibel/lod/core/world/DhClientWorld.java
@@ -2,7 +2,7 @@ package com.seibel.lod.core.world;
import com.seibel.lod.core.level.DhClientLevel;
import com.seibel.lod.core.level.ILevel;
-import com.seibel.lod.core.io.structure.ClientOnlySaveStructure;
+import com.seibel.lod.core.file.structure.ClientOnlySaveStructure;
import com.seibel.lod.core.config.Config;
import com.seibel.lod.core.util.DetailDistanceUtil;
import com.seibel.lod.core.util.objects.EventLoop;
diff --git a/core/src/main/java/com/seibel/lod/core/world/DhServerWorld.java b/core/src/main/java/com/seibel/lod/core/world/DhServerWorld.java
index 441063d2d..af723092e 100644
--- a/core/src/main/java/com/seibel/lod/core/world/DhServerWorld.java
+++ b/core/src/main/java/com/seibel/lod/core/world/DhServerWorld.java
@@ -2,7 +2,7 @@ package com.seibel.lod.core.world;
import com.seibel.lod.core.level.DhServerLevel;
import com.seibel.lod.core.level.ILevel;
-import com.seibel.lod.core.io.structure.LocalSaveStructure;
+import com.seibel.lod.core.file.structure.LocalSaveStructure;
import com.seibel.lod.core.util.LodUtil;
import com.seibel.lod.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.lod.core.wrapperInterfaces.world.IServerLevelWrapper;