diff --git a/Kernel/Makefile b/Kernel/Makefile
index ec925729a95feea9affd989f48116624f8f99870..2d558fca3f14a2dffab6bf9dd0d5f758a583ac69 100644
--- a/Kernel/Makefile
+++ b/Kernel/Makefile
@@ -52,7 +52,7 @@ all: $(BIN)
 clean:
 	@$(RM) $(BIN) ../Acess2.$(ARCH).gz $(BIN).dsm ../Map.$(ARCH).txt LineCounts.$(ARCH).txt $(OBJ) $(DEPFILES)
 
-install: $(BIN)
+install: $(BIN) 
 	gzip -c $(BIN) > ../Acess2.$(ARCH).gz
 	$(xCP) ../Acess2.$(ARCH).gz $(DISTROOT)
 
@@ -65,6 +65,7 @@ $(BIN): $(OBJ) $(MODS) arch/$(ARCHDIR)/link.ld Makefile
 	$(DISASM) -S $(BIN) > $(BIN).dsm
 	@wc -l $(SRCFILES) include/*.h > LineCounts.$(ARCH).txt
 	@echo BUILD_NUM = $$(( $(BUILD_NUM) + 1 )) > Makefile.BuildNum.$(ARCH)
+	$(POSTBUILD)
 	@$(STRIP) $(BIN)
 
 %.ao.$(ARCH): %.asm Makefile
diff --git a/Kernel/arch/x86_64/Makefile b/Kernel/arch/x86_64/Makefile
index 22ad8c93c375f5ca09e42edf9b92bbbdb7c46015..e30bf8d60fbb737b91feee07869f25b34b0196ee 100644
--- a/Kernel/arch/x86_64/Makefile
+++ b/Kernel/arch/x86_64/Makefile
@@ -24,3 +24,5 @@ endif
 A_OBJ  = start32.ao start64.ao desctab.ao
 A_OBJ += main.o lib.o proc.o mm_virt.o mm_phys.o vm8086.o
 A_OBJ += kernelpanic.o errors.o
+
+POSTBUILD = objcopy $(BIN) -F elf32 $(BIN)
diff --git a/Kernel/arch/x86_64/include/arch.h b/Kernel/arch/x86_64/include/arch.h
index 6b75a7df3b4a8db751baad4b809bcb372901a7ee..3993fe9c36258618d36eb59887732a4c1495f23e 100644
--- a/Kernel/arch/x86_64/include/arch.h
+++ b/Kernel/arch/x86_64/include/arch.h
@@ -34,6 +34,7 @@ typedef Uint64	tPAddr;
 typedef Uint64	tVAddr;
 
 typedef Uint64	size_t;
+typedef char	BOOL;
 
 #define __ASM__	__asm__ __volatile__
 
diff --git a/Kernel/arch/x86_64/link.ld b/Kernel/arch/x86_64/link.ld
index ce537f9077917c83ab82200806dc09dbfdc1269c..8f75ddb6d9c179dd9b5f35c2b400f9b36350724d 100644
--- a/Kernel/arch/x86_64/link.ld
+++ b/Kernel/arch/x86_64/link.ld
@@ -7,8 +7,11 @@
 /* -2 GiB */
 _kernel_base = 0xFFFFFFFF80000000;
 
+/*
 OUTPUT_FORMAT(elf32-i386)
 OUTPUT_ARCH(i386:x86-64)
+*/
+OUTPUT_FORMAT(elf64)
 ENTRY(start)
 
 SECTIONS {
diff --git a/Kernel/arch/x86_64/mm_phys.c b/Kernel/arch/x86_64/mm_phys.c
index 0130773f122516fc56beccc20bb20e7777a03194..f3cdceb5179c5e8310782b0f3087c5d1aad9b9df 100644
--- a/Kernel/arch/x86_64/mm_phys.c
+++ b/Kernel/arch/x86_64/mm_phys.c
@@ -390,7 +390,7 @@ tPAddr MM_AllocPhysRange(int Pages, int MaxBits)
 			nFree ++;
 			addr ++;
 			LOG("nFree(%i) == %i (0x%x)", nFree, Pages, addr);
-			if(nFree == Num)
+			if(nFree == Pages)
 				break;
 		}
 		LOG("nFree = %i", nFree);
@@ -409,10 +409,10 @@ tPAddr MM_AllocPhysRange(int Pages, int MaxBits)
 		Mutex_Release(&glPhysicalPages);
 		// TODO: Page out
 		// ATM. Just Warning
-		Warning(" MM_AllocPhysRange: Out of memory (unable to fulfil request for %i pages)", Num);
+		Warning(" MM_AllocPhysRange: Out of memory (unable to fulfil request for %i pages)", Pages);
 		Log_Warning("Arch",
 			"Out of memory (unable to fulfil request for %i pages)",
-			Num
+			Pages	
 			);
 		LEAVE('i', 0);
 		return 0;
diff --git a/Kernel/arch/x86_64/proc.c b/Kernel/arch/x86_64/proc.c
index c5c0c18efb50301f848124920778477c3c3c8d82..1d1513be4e5404e743fef2a06840d62451c79f3c 100644
--- a/Kernel/arch/x86_64/proc.c
+++ b/Kernel/arch/x86_64/proc.c
@@ -387,7 +387,7 @@ void Proc_Start(void)
 	{
 		gaCPUs[0].IdleThread = Proc_GetCurThread();
 		gaCPUs[0].IdleThread->ThreadName = "Idle Thread";
-		gaCPUs[0].IdleThread->NumTickets = 0;	// Never called randomly
+		Threads_SetPriority( gaCPUs[0].IdleThread, -1 );	// Never called randomly
 		gaCPUs[0].IdleThread->Quantum = 1;	// 1 slice quantum
 		for(;;)	HALT();	// Just yeilds
 	}