diff --git a/Makefile b/Makefile
index c29155a11a5d065d5b3c9bcea3043f55e07816ff..6347967452ce73e5b78ab4ba72ef6966f9dca814 100644
--- a/Makefile
+++ b/Makefile
@@ -1,14 +1,16 @@
 
+BITS ?= 64
+
 default: assemble-legacy
 
 bootloader-legacy:
-	$(MAKE) -C bootloader-legacy
+	BITS=$(BITS) $(MAKE) -C bootloader-legacy
 
 bootloader-uefi:
-	$(MAKE) -C bootloader-uefi
+	# BITS=$(BITS) $(MAKE) -C bootloader-uefi
 
 kernel:
-	$(MAKE) -C kernel
+	BITS=$(BITS) $(MAKE) -C kernel
 
 .PHONY: bootloader-legacy bootloader-uefi kernel
 
diff --git a/bootloader-legacy/Makefile b/bootloader-legacy/Makefile
index 8fa0ceedd9f63dadef517e984786b05031cca5c4..1e602476b8d166c9919bf4fe5b06432a88e06ef2 100644
--- a/bootloader-legacy/Makefile
+++ b/bootloader-legacy/Makefile
@@ -1,11 +1,12 @@
-build:
-	nasm -f bin boot.asm -o boot.img
-
-build_x86:
-
-build_x86_64:
+BITS ?= 64
 
+build:
+	nasm -f bin boot.asm -DTARGET_BITS=$(BITS) -o boot.img
 
 run: build
 	qemu-system-x86_64 boot.img
 
+clean:
+	rm -f boot.img
+
+
diff --git a/bootloader-legacy/boot.asm b/bootloader-legacy/boot.asm
index 58d580180a55f705942740cb05a38a8212d39eab..df57a7139ed8f4c33341052f4962e7bc5d7a4482 100644
--- a/bootloader-legacy/boot.asm
+++ b/bootloader-legacy/boot.asm
@@ -100,6 +100,7 @@ _prot_begin:
     mov ebx, _motd_32
     call println_vga
 
+%if TARGET_BITS == 64
     ; Test if 64bit available
     call test_support_long_mode
     cmp eax, 0
@@ -112,6 +113,9 @@ _test_passed:
     jmp inline_enter_long_mode
 %include "./inline_x64lib.inc"
     jmp _call_kern_64
+%else
+    jmp _call_kern_32
+%endif
 
 [bits 32]
 _call_kern_32:
diff --git a/efi/efi_helo.demo/build.sh b/playground/efi_helo.demo/build.sh
similarity index 100%
rename from efi/efi_helo.demo/build.sh
rename to playground/efi_helo.demo/build.sh
diff --git a/efi/efi_helo.demo/efi/LICENSE b/playground/efi_helo.demo/efi/LICENSE
similarity index 100%
rename from efi/efi_helo.demo/efi/LICENSE
rename to playground/efi_helo.demo/efi/LICENSE
diff --git a/efi/efi_helo.demo/efi/README.md b/playground/efi_helo.demo/efi/README.md
similarity index 100%
rename from efi/efi_helo.demo/efi/README.md
rename to playground/efi_helo.demo/efi/README.md
diff --git a/efi/efi_helo.demo/efi/efi-bs.h b/playground/efi_helo.demo/efi/efi-bs.h
similarity index 100%
rename from efi/efi_helo.demo/efi/efi-bs.h
rename to playground/efi_helo.demo/efi/efi-bs.h
diff --git a/efi/efi_helo.demo/efi/efi-ct.h b/playground/efi_helo.demo/efi/efi-ct.h
similarity index 100%
rename from efi/efi_helo.demo/efi/efi-ct.h
rename to playground/efi_helo.demo/efi/efi-ct.h
diff --git a/efi/efi_helo.demo/efi/efi-rs.h b/playground/efi_helo.demo/efi/efi-rs.h
similarity index 100%
rename from efi/efi_helo.demo/efi/efi-rs.h
rename to playground/efi_helo.demo/efi/efi-rs.h
diff --git a/efi/efi_helo.demo/efi/efi-st.h b/playground/efi_helo.demo/efi/efi-st.h
similarity index 100%
rename from efi/efi_helo.demo/efi/efi-st.h
rename to playground/efi_helo.demo/efi/efi-st.h
diff --git a/efi/efi_helo.demo/efi/efi-time.h b/playground/efi_helo.demo/efi/efi-time.h
similarity index 100%
rename from efi/efi_helo.demo/efi/efi-time.h
rename to playground/efi_helo.demo/efi/efi-time.h
diff --git a/efi/efi_helo.demo/efi/efi.h b/playground/efi_helo.demo/efi/efi.h
similarity index 100%
rename from efi/efi_helo.demo/efi/efi.h
rename to playground/efi_helo.demo/efi/efi.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-acpitp.h b/playground/efi_helo.demo/efi/protocol/efi-acpitp.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-acpitp.h
rename to playground/efi_helo.demo/efi/protocol/efi-acpitp.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-dpp.h b/playground/efi_helo.demo/efi/protocol/efi-dpp.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-dpp.h
rename to playground/efi_helo.demo/efi/protocol/efi-dpp.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-fp.h b/playground/efi_helo.demo/efi/protocol/efi-fp.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-fp.h
rename to playground/efi_helo.demo/efi/protocol/efi-fp.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-gop.h b/playground/efi_helo.demo/efi/protocol/efi-gop.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-gop.h
rename to playground/efi_helo.demo/efi/protocol/efi-gop.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-lidpp.h b/playground/efi_helo.demo/efi/protocol/efi-lidpp.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-lidpp.h
rename to playground/efi_helo.demo/efi/protocol/efi-lidpp.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-lip.h b/playground/efi_helo.demo/efi/protocol/efi-lip.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-lip.h
rename to playground/efi_helo.demo/efi/protocol/efi-lip.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-sfsp.h b/playground/efi_helo.demo/efi/protocol/efi-sfsp.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-sfsp.h
rename to playground/efi_helo.demo/efi/protocol/efi-sfsp.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-stip.h b/playground/efi_helo.demo/efi/protocol/efi-stip.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-stip.h
rename to playground/efi_helo.demo/efi/protocol/efi-stip.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-stop.h b/playground/efi_helo.demo/efi/protocol/efi-stop.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-stop.h
rename to playground/efi_helo.demo/efi/protocol/efi-stop.h
diff --git a/efi/efi_helo.demo/efi/protocol/efi-vmpp.h b/playground/efi_helo.demo/efi/protocol/efi-vmpp.h
similarity index 100%
rename from efi/efi_helo.demo/efi/protocol/efi-vmpp.h
rename to playground/efi_helo.demo/efi/protocol/efi-vmpp.h
diff --git a/efi/efi_helo.demo/ehelo.demo.c b/playground/efi_helo.demo/ehelo.demo.c
similarity index 100%
rename from efi/efi_helo.demo/ehelo.demo.c
rename to playground/efi_helo.demo/ehelo.demo.c
diff --git a/bootloader-legacy/test.asm b/playground/test.asm
similarity index 100%
rename from bootloader-legacy/test.asm
rename to playground/test.asm