diff --git a/Makefile b/Makefile
index b5bd258e0d86198e3cdea7ff7585ce83625f769d..22091c6bfd9ecb5e395e2616b94a778892009fed 100644
--- a/Makefile
+++ b/Makefile
@@ -1,20 +1,25 @@
 
-default: assemble
+default: assemble-legacy
 
-bootloader:
-	$(MAKE) -C bootloader
+bootloader-legacy:
+	$(MAKE) -C bootloader-legacy
+
+bootloader-uefi:
+	$(MAKE) -C bootloader-legacy
 
 kernel:
 	$(MAKE) -C kernel
 
-.PHONY: bootloader kernel
+.PHONY: bootloader-legacy bootloader-uefi kernel
+
+build: bootloader-legacy bootloader-uefi kernel
 
-build: bootloader kernel
+assemble-legacy: build
+	cat bootloader-legacy/boot.img kernel/kernel.img > legacy.img
 
-assemble: build
-	cat bootloader/boot.img kernel/kernel.img > disk.img
+assemble-uefi: build
 
-run: assemble
-	qemu-system-x86_64 disk.img
+run-legacy: assemble-legacy
+	qemu-system-x86_64 legacy.img
 
 
diff --git a/bootloader/Makefile b/bootloader-legacy/Makefile
similarity index 100%
rename from bootloader/Makefile
rename to bootloader-legacy/Makefile
diff --git a/bootloader/boot.asm b/bootloader-legacy/boot.asm
similarity index 100%
rename from bootloader/boot.asm
rename to bootloader-legacy/boot.asm
diff --git a/bootloader/mbr_end.inc b/bootloader-legacy/mbr_end.inc
similarity index 100%
rename from bootloader/mbr_end.inc
rename to bootloader-legacy/mbr_end.inc
diff --git a/bootloader/str.16.inc b/bootloader-legacy/str.16.inc
similarity index 100%
rename from bootloader/str.16.inc
rename to bootloader-legacy/str.16.inc
diff --git a/bootloader/str.32.inc b/bootloader-legacy/str.32.inc
similarity index 100%
rename from bootloader/str.32.inc
rename to bootloader-legacy/str.32.inc
diff --git a/bootloader/test.asm b/bootloader-legacy/test.asm
similarity index 100%
rename from bootloader/test.asm
rename to bootloader-legacy/test.asm
diff --git a/bootloader-uefi/scripts/assemble-hdd-image.fish b/bootloader-uefi/scripts/assemble-hdd-image.fish
new file mode 100755
index 0000000000000000000000000000000000000000..ee233d1e5bdca8a34edaba9abc8e5a9654876f6b
--- /dev/null
+++ b/bootloader-uefi/scripts/assemble-hdd-image.fish
@@ -0,0 +1,43 @@
+#!/usr/bin/fish
+
+set efi_file $argv[1]
+set kernel_file $argv[2]
+if test (count $argv) -lt 2
+    echo "Usage: $argv[0] <efi_file> <kernel_file>"
+    exit 1
+end
+
+set output_file ./disk.img
+set mountp ./tmp.mount.point
+set disk_size 256M
+
+# Create disk image
+dd if=/dev/zero of=$output_file bs=$disk_size count=1 status=progress
+and sgdisk -n 1:0:+128M $output_file # EFI system partition
+
+# Format partitions
+and sudo losetup /dev/loop5 $output_file --partscan
+and sudo mkfs.fat -s2 -F32 /dev/loop5p1
+
+# Mount EFI partition
+and rm -rf $mountp ; and mkdir $mountp
+and sudo mount /dev/loop5p1 $mountp
+and sudo mkdir -p $mountp/efi/boot
+
+# load files
+and sudo cp $efi_file $mountp/efi/boot/BOOTX64.efi
+and sudo cp $kernel_file $mountp/kernel.efi
+
+# Cleanup
+and sudo umount $mountp
+and sudo sync
+and sudo losetup -d /dev/loop5
+and rmdir $mountp
+
+and echo "Success"
+or echo "Failed."
+
+
+
+
+
diff --git a/efi/efi-to-hdd-image.fish b/efi/efi-to-hdd-image.fish
deleted file mode 100755
index 190e69d29c482a822033db439c1f9da4d72a2585..0000000000000000000000000000000000000000
--- a/efi/efi-to-hdd-image.fish
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/fish
-
-set efi_file $argv[1]
-set output_file ./output.img
-set mountp ./tmp.mount.point
-
-dd if=/dev/zero of=$output_file bs=560M count=1 status=progress
-and sgdisk -n 1:0:0 $output_file
-
-and sudo losetup /dev/loop5 $output_file --partscan
-and sudo mkfs.vfat -F32 /dev/loop5p1
-
-and rm -rf $mountp ; and mkdir $mountp
-and sudo mount /dev/loop5p1 $mountp
-and sudo mkdir -p $mountp/efi/boot
-
-and sudo cp $efi_file $mountp/efi/boot/BOOTX64.efi
-
-and sudo umount $mountp
-and sudo sync
-and sudo losetup -d /dev/loop5
-
-and echo "Success"
-or echo "Failed."
-
-
-
-
-