diff --git a/src/lib.rs b/src/lib.rs
index a9f0cc3a3bded59c3852c7632d22c93f50449702..87a5cc4a5d7d6f69bfeb258dcc1e058dd56b0c33 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -22,7 +22,7 @@ use linked_list_allocator::LockedHeap;
 use log::error;
 use spin::Mutex;
 
-use self::disk::DiskBios;
+use self::os::DiskBios;
 use self::logger::LOGGER;
 use self::memory_map::memory_map;
 use self::thunk::ThunkData;
@@ -32,9 +32,9 @@ use self::vga::{VgaTextBlock, VgaTextColor, Vga};
 #[macro_use]
 mod macros;
 
-mod disk;
 mod logger;
 mod memory_map;
+mod os;
 mod paging;
 mod panic;
 mod thunk;
diff --git a/src/disk.rs b/src/os/bios/disk.rs
similarity index 100%
rename from src/disk.rs
rename to src/os/bios/disk.rs
diff --git a/src/os/bios/mod.rs b/src/os/bios/mod.rs
new file mode 100644
index 0000000000000000000000000000000000000000..8ba7499a0965763811022e91a9652b2f20081084
--- /dev/null
+++ b/src/os/bios/mod.rs
@@ -0,0 +1,3 @@
+pub use self::disk::DiskBios;
+
+mod disk;
diff --git a/src/os/mod.rs b/src/os/mod.rs
new file mode 100644
index 0000000000000000000000000000000000000000..8eee9ad9dd83815d21b596f8584b3fbb6d100d5f
--- /dev/null
+++ b/src/os/mod.rs
@@ -0,0 +1,11 @@
+#[cfg(all(target_arch = "x86", target_os = "none"))]
+pub use self::bios::*;
+
+#[cfg(all(target_arch = "x86", target_os = "none"))]
+mod bios;
+
+#[cfg(target_os = "uefi")]
+pub use self::uefi::*;
+
+#[cfg(target_os = "uefi")]
+mod uefi;
diff --git a/src/os/uefi/mod.rs b/src/os/uefi/mod.rs
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391