<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Tasks.cpp</filename>
    </added>
    <added>
      <filename>inc/Tasks.hpp</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,21 +1,21 @@
 #include &lt;Akari.hpp&gt;
 #include &lt;debug.hpp&gt;
 
-AkariKernel *Akari;
+Kernel *Akari;
 
-AkariKernel::AkariKernel(): Memory(0), Console(0), Descriptor(0), Timer(0), Syscall(0) {
+Kernel::Kernel(): memory(0), console(0), descriptor(0), timer(0), tasks(0), syscall(0) {
 }
 
 /**
- * Constructs an AkariKernel, using the given address as the current placement address.
+ * Constructs an Kernel, using the given address as the current placement address.
  */
-AkariKernel *AkariKernel::Construct(u32 addr, u32 upperMemory) {
-	AkariKernel *kernel = new ((void *)addr) AkariKernel();
-	addr += sizeof(AkariKernel);
-	kernel-&gt;Memory = new ((void *)addr) AkariMemorySubsystem(upperMemory);
-	addr += sizeof(AkariMemorySubsystem);
+Kernel *Kernel::Construct(u32 addr, u32 upperMemory) {
+	Kernel *kernel = new ((void *)addr) Kernel();
+	addr += sizeof(Kernel);
+	kernel-&gt;memory = new ((void *)addr) Memory(upperMemory);
+	addr += sizeof(Memory);
 
-	kernel-&gt;Memory-&gt;setPlacementMode(addr);
+	kernel-&gt;memory-&gt;setPlacementMode(addr);
 
 	return kernel;
 }</diff>
      <filename>Akari.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-#include &lt;AkariConsoleSubsystem.hpp&gt;
+#include &lt;Console.hpp&gt;
 #include &lt;debug.hpp&gt;
 
 #define SCREEN_VMEM	0xb8000
@@ -9,16 +9,16 @@
 
 #define SCREEN_BLANK	0x0720
 
-AkariConsoleSubsystem::AkariConsoleSubsystem() {
+Console::Console() {
 	clear();
 }
 
-u8 AkariConsoleSubsystem::versionMajor() const { return 0; }
-u8 AkariConsoleSubsystem::versionMinor() const { return 1; }
-const char *AkariConsoleSubsystem::versionManufacturer() const { return &quot;Akari&quot;; }
-const char *AkariConsoleSubsystem::versionProduct() const { return &quot;Akari Console&quot;; }
+u8 Console::versionMajor() const { return 0; }
+u8 Console::versionMinor() const { return 1; }
+const char *Console::versionManufacturer() const { return &quot;Akari&quot;; }
+const char *Console::versionProduct() const { return &quot;Akari Console&quot;; }
 
-void AkariConsoleSubsystem::clear() {
+void Console::clear() {
 	u16 *i = (u16 *)SCREEN_VMEM;
 
 	for (u16 j = 0; j &lt; 80 * 25; ++j, ++i)
@@ -28,7 +28,7 @@ void AkariConsoleSubsystem::clear() {
 	_updateCursor();
 }
 
-void AkariConsoleSubsystem::putChar(s8 c) {
+void Console::putChar(s8 c) {
 	switch (c) {
 		case '\n':	_shiftCursorNewline(); break;
 		case '\t':	_shiftCursorTab(); break;
@@ -38,17 +38,17 @@ void AkariConsoleSubsystem::putChar(s8 c) {
 	}
 }
 
-void AkariConsoleSubsystem::putString(const char *s) {
+void Console::putString(const char *s) {
 	while (*s)
 		putChar(*s++);
 }
 
-void AkariConsoleSubsystem::putStringN(const char *s, u32 n) {
+void Console::putStringN(const char *s, u32 n) {
 	while (*s &amp;&amp; n)
 		putChar(*s++), --n;
 }
 
-void AkariConsoleSubsystem::putInt(u32 n, u8 base) {
+void Console::putInt(u32 n, u8 base) {
 	ASSERT(base &gt;= 2 &amp;&amp; base &lt;= 36);
 	u32 index = 1, digits = 1;
 
@@ -67,7 +67,7 @@ void AkariConsoleSubsystem::putInt(u32 n, u8 base) {
 	} while (index &gt;= 1);
 }
 
-void AkariConsoleSubsystem::_scroll() {
+void Console::_scroll() {
 	u16 i;
 	while (_cursorY &gt; 24) {
 		for (i = 0; i &lt; 24 * 80; ++i)
@@ -78,7 +78,7 @@ void AkariConsoleSubsystem::_scroll() {
 	}
 }
 
-void AkariConsoleSubsystem::_shiftCursor() {
+void Console::_shiftCursor() {
 	if (++_cursorX &gt;= 80) {
 		_cursorX = 0;
 		++_cursorY;
@@ -87,7 +87,7 @@ void AkariConsoleSubsystem::_shiftCursor() {
 		_updateCursor();
 }
 
-void AkariConsoleSubsystem::_shiftCursorTab() {
+void Console::_shiftCursorTab() {
 	if ((_cursorX = _cursorX - (_cursorX % 8) + 8) &gt;= 80) {
 		_cursorX = 0;
 		++_cursorY;
@@ -96,14 +96,14 @@ void AkariConsoleSubsystem::_shiftCursorTab() {
 		_updateCursor();
 }
 
-void AkariConsoleSubsystem::_shiftCursorNewline() {
+void Console::_shiftCursorNewline() {
 	_cursorX = 0;
 	++_cursorY;
 	_scroll();
 	_updateCursor();
 }
 
-void AkariConsoleSubsystem::_updateCursor() const {
+void Console::_updateCursor() const {
 	u16 index = _cursorX + 80 * _cursorY;
 	AkariOutB(PORT_CURSOR_IDX, PORT_CURSOR_MSB_IDX);
 	AkariOutB(PORT_CURSOR_DATA, (index &gt;&gt; 8) &amp; 0xFF);</diff>
      <filename>Console.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
-#include &lt;AkariDescriptorSubsystem.hpp&gt;
-#include &lt;AkariTaskSubsystem.hpp&gt;
+#include &lt;Descriptor.hpp&gt;
+#include &lt;Tasks.hpp&gt;
 #include &lt;Akari.hpp&gt;
 #include &lt;interrupts.hpp&gt;
 #include &lt;debug.hpp&gt;
 
-AkariDescriptorSubsystem::AkariDescriptorSubsystem(): gdt(0), idt(0), irqt(0) {
+Descriptor::Descriptor(): gdt(0), idt(0), irqt(0) {
 	gdt = new GDT(10);
 	gdt-&gt;setGate(1, 0, 0xFFFFFFFF, 0, true);	// code (CS)
 	gdt-&gt;setGate(2, 0, 0xFFFFFFFF, 0, false);	// data (SS)
@@ -23,12 +23,12 @@ AkariDescriptorSubsystem::AkariDescriptorSubsystem(): gdt(0), idt(0), irqt(0) {
 	irqt = new IRQT(idt);
 }
 
-u8 AkariDescriptorSubsystem::versionMajor() const { return 0; }
-u8 AkariDescriptorSubsystem::versionMinor() const { return 1; }
-const char *AkariDescriptorSubsystem::versionManufacturer() const { return &quot;Akari&quot;; }
-const char *AkariDescriptorSubsystem::versionProduct() const { return &quot;Akari Descriptor Table Manager&quot;; }
+u8 Descriptor::versionMajor() const { return 0; }
+u8 Descriptor::versionMinor() const { return 1; }
+const char *Descriptor::versionManufacturer() const { return &quot;Akari&quot;; }
+const char *Descriptor::versionProduct() const { return &quot;Akari Descriptor Table Manager&quot;; }
 
-AkariDescriptorSubsystem::GDT::GDT(u32 n): _entryCount(n), _entries(0) {
+Descriptor::GDT::GDT(u32 n): _entryCount(n), _entries(0) {
 	_entries = new Entry[n];
 	_pointer.limit = (sizeof(Entry) * n - 1);
 	_pointer.base = (u32)_entries;
@@ -36,7 +36,7 @@ AkariDescriptorSubsystem::GDT::GDT(u32 n): _entryCount(n), _entries(0) {
 	setGate(0, 0, 0, 0, 0);
 }
 
-void AkariDescriptorSubsystem::GDT::setGateFields(s32 num, u32 base, u32 limit, u8 access, u8 granularity) {
+void Descriptor::GDT::setGateFields(s32 num, u32 base, u32 limit, u8 access, u8 granularity) {
 	ASSERT(num &gt;= 0 &amp;&amp; num &lt; (s32)_entryCount);
 
 	_entries[num].base_low		= (base &amp; 0xFFFF);
@@ -49,16 +49,16 @@ void AkariDescriptorSubsystem::GDT::setGateFields(s32 num, u32 base, u32 limit,
 	_entries[num].access		= access;
 }
 
-void AkariDescriptorSubsystem::GDT::setGate(s32 num, u32 base, u32 limit, u8 dpl, bool code) {
+void Descriptor::GDT::setGate(s32 num, u32 base, u32 limit, u8 dpl, bool code) {
 	// access flag is like 0b1xx1yyyy, where yyyy = code?0xA:0x2 (just 'cause), and xx=DPL.
 	setGateFields(num, base, limit, (code ? 0xA : 0x2) | (dpl &lt;&lt; 5) | (0x9 &lt;&lt; 4), 0xCF);
 }
 
-void AkariDescriptorSubsystem::GDT::clearGate(s32 num) {
+void Descriptor::GDT::clearGate(s32 num) {
 	setGateFields(num, 0, 0, 0, 0);
 }
 
-void AkariDescriptorSubsystem::GDT::writeTSS(s32 num, u16 ss0, u32 esp0) {
+void Descriptor::GDT::writeTSS(s32 num, u16 ss0, u32 esp0) {
 	u32 base = (u32)&amp;_tssEntry;
 	u32 limit = base + sizeof(TSSEntry);
 
@@ -78,7 +78,7 @@ void AkariDescriptorSubsystem::GDT::writeTSS(s32 num, u16 ss0, u32 esp0) {
 	setGateFields(num, base, limit, 0xE9, 0x00);
 }
 
-void AkariDescriptorSubsystem::GDT::flush() {
+void Descriptor::GDT::flush() {
 	__asm__ __volatile__(&quot;	\
 		movl %0, %%eax; \
 		lgdt (%%eax); \
@@ -92,19 +92,19 @@ void AkariDescriptorSubsystem::GDT::flush() {
 	.flush:&quot; : : &quot;r&quot; ((u32)&amp;_pointer) : &quot;eax&quot;);
 }
 
-void AkariDescriptorSubsystem::GDT::flushTSS(s32 num) {
+void Descriptor::GDT::flushTSS(s32 num) {
 	__asm__ __volatile__(&quot;ltr %%ax&quot; : : &quot;a&quot; ((num * 8) + 0x3));
 }
 
-void AkariDescriptorSubsystem::GDT::setTSSStack(u32 addr) {
+void Descriptor::GDT::setTSSStack(u32 addr) {
 	_tssEntry.esp0 = addr;
 }
 
-void AkariDescriptorSubsystem::GDT::setTSSIOMap(u8 *const &amp;iomap) {
+void Descriptor::GDT::setTSSIOMap(u8 *const &amp;iomap) {
 	POSIX::memcpy(_tssEntry.iomap, iomap, 32);
 }
 
-AkariDescriptorSubsystem::IDT::IDT() {
+Descriptor::IDT::IDT() {
 	for (u16 i = 0; i &lt; 0x100; ++i)
 		_routines[i] = 0;
 
@@ -129,22 +129,22 @@ AkariDescriptorSubsystem::IDT::IDT() {
 	__asm__ __volatile__(&quot;lidt %0&quot; : : &quot;m&quot; (_pointer));
 }
 
-void AkariDescriptorSubsystem::IDT::installHandler(u8 isr, isr_handler_func_t callback) {
+void Descriptor::IDT::installHandler(u8 isr, isr_handler_func_t callback) {
 	ASSERT(isr &gt;= 0 &amp;&amp; isr &lt;= 0xFF);
 	_routines[isr] = callback;
 }
 
-void AkariDescriptorSubsystem::IDT::clearHandler(u8 isr) {
+void Descriptor::IDT::clearHandler(u8 isr) {
 	installHandler(isr, 0);
 }
 
-void *AkariDescriptorSubsystem::IDT::callHandler(u8 isr, struct modeswitch_registers *regs) {
+void *Descriptor::IDT::callHandler(u8 isr, struct modeswitch_registers *regs) {
 	if (_routines[isr])
 		return _routines[isr](regs);
 	return 0;
 }
 
-void AkariDescriptorSubsystem::IDT::setGate(u8 idt, void (*callback)(), u16 isrSegment, u8 flags) {
+void Descriptor::IDT::setGate(u8 idt, void (*callback)(), u16 isrSegment, u8 flags) {
 	_entries[idt].offset_low = (u32)callback &amp; 0xFFFF;
 	_entries[idt].selector = isrSegment;
 	_entries[idt]._always_0 = 0;
@@ -152,7 +152,7 @@ void AkariDescriptorSubsystem::IDT::setGate(u8 idt, void (*callback)(), u16 isrS
 	_entries[idt].offset_high = ((u32)callback &gt;&gt; 16) &amp; 0xFFFF;
 }
 
-AkariDescriptorSubsystem::IRQT::IRQT(IDT *idt): _idt(idt) {
+Descriptor::IRQT::IRQT(IDT *idt): _idt(idt) {
 	AkariOutB(0x20, 0x11);
 	AkariOutB(0xA0, 0x11);
 	AkariOutB(0x21, 0x20);
@@ -175,18 +175,18 @@ AkariDescriptorSubsystem::IRQT::IRQT(IDT *idt): _idt(idt) {
 		_routines[i] = 0;
 }
 
-void AkariDescriptorSubsystem::IRQT::installHandler(u8 irq, irq_handler_func_t callback) {
+void Descriptor::IRQT::installHandler(u8 irq, irq_handler_func_t callback) {
 	// you can't set IRQ 0 (timer) here - it's done manually. see interrupts.s
 	ASSERT(irq &gt;= 1 &amp;&amp; irq &lt;= 0x0f);
 	_routines[irq] = callback;
 }
 
-void AkariDescriptorSubsystem::IRQT::clearHandler(u8 irq) {
+void Descriptor::IRQT::clearHandler(u8 irq) {
 	installHandler(irq, 0);
 }
 
-void *AkariDescriptorSubsystem::IRQT::callHandler(u8 irq, struct modeswitch_registers *regs) {
-	AkariTaskSubsystem::Task *iter = Akari-&gt;Task-&gt;start;
+void *Descriptor::IRQT::callHandler(u8 irq, struct modeswitch_registers *regs) {
+	Tasks::Task *iter = Akari-&gt;tasks-&gt;start;
 	while (iter) {
 		if (iter-&gt;irqListen == irq) {
 			iter-&gt;irqListenHits++;
@@ -197,7 +197,7 @@ void *AkariDescriptorSubsystem::IRQT::callHandler(u8 irq, struct modeswitch_regi
 
 			// Looks like it's their turn. We append the current `iter` to the linked
 			// list made of ATS#priorityStart and the Task's own priorityNext's.
-			AkariTaskSubsystem::Task **append = &amp;Akari-&gt;Task-&gt;priorityStart;
+			Tasks::Task **append = &amp;Akari-&gt;tasks-&gt;priorityStart;
 			while (*append)
 				append = &amp;(*append)-&gt;priorityNext;
 			*append = iter;
@@ -207,15 +207,15 @@ void *AkariDescriptorSubsystem::IRQT::callHandler(u8 irq, struct modeswitch_regi
 	}
 
 	// If there's a priority, switch to it immediately. Crap. What do we do about handlers?!
-	if (Akari-&gt;Task-&gt;priorityStart) {
-		iter = Akari-&gt;Task-&gt;priorityStart;
-		Akari-&gt;Task-&gt;priorityStart = iter-&gt;priorityNext;
+	if (Akari-&gt;tasks-&gt;priorityStart) {
+		iter = Akari-&gt;tasks-&gt;priorityStart;
+		Akari-&gt;tasks-&gt;priorityStart = iter-&gt;priorityNext;
 		iter-&gt;priorityNext = 0;
 
 		// Task switch!
-		Akari-&gt;Task-&gt;saveRegisterToTask(Akari-&gt;Task-&gt;current, regs);
-		Akari-&gt;Task-&gt;current = iter;
-		return Akari-&gt;Task-&gt;assignInternalTask(Akari-&gt;Task-&gt;current);
+		Akari-&gt;tasks-&gt;saveRegisterToTask(Akari-&gt;tasks-&gt;current, regs);
+		Akari-&gt;tasks-&gt;current = iter;
+		return Akari-&gt;tasks-&gt;assignInternalTask(Akari-&gt;tasks-&gt;current);
 	}
 		
 </diff>
      <filename>Descriptor.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,9 @@
-#include &lt;AkariMemorySubsystem.hpp&gt;
+#include &lt;Memory.hpp&gt;
 #include &lt;Akari.hpp&gt;
 #include &lt;POSIX.hpp&gt;
 #include &lt;debug.hpp&gt;
 #include &lt;entry.hpp&gt;
-#include &lt;memory.hpp&gt;
+#include &lt;physmem.hpp&gt;
 
 // Index into _frames, and the bit offset within a single entry
 #define INDEX_BIT(n)	((n)/(8*4))
@@ -18,17 +18,17 @@
 // minimum size of a heap
 #define HEAP_MIN_SIZE		0x500000
 
-AkariMemorySubsystem::AkariMemorySubsystem(u32 upperMemory):
+Memory::Memory(u32 upperMemory):
 _upperMemory(upperMemory), _placementAddress(0), _frames(0), _frameCount(0), _heap(0),
 _kernelDirectory(0), _activeDirectory(0)
 { }
 
-u8 AkariMemorySubsystem::versionMajor() const { return 0; }
-u8 AkariMemorySubsystem::versionMinor() const { return 1; }
-const char *AkariMemorySubsystem::versionManufacturer() const { return &quot;Akari&quot;; }
-const char *AkariMemorySubsystem::versionProduct() const { return &quot;Akari Memory Heap&quot;; }
+u8 Memory::versionMajor() const { return 0; }
+u8 Memory::versionMinor() const { return 1; }
+const char *Memory::versionManufacturer() const { return &quot;Akari&quot;; }
+const char *Memory::versionProduct() const { return &quot;Akari Memory Heap&quot;; }
 
-void AkariMemorySubsystem::setPlacementMode(u32 addr) {
+void Memory::setPlacementMode(u32 addr) {
 	ASSERT(!_placementAddress);
 
 	_placementAddress = addr;
@@ -44,7 +44,7 @@ void AkariMemorySubsystem::setPlacementMode(u32 addr) {
 // temp debug flag only, set to true if you want the kheap to be writeable from usermode!
 #define KERNEL_HEAP_PROMISC true
 
-void AkariMemorySubsystem::setPaging(bool mode) {
+void Memory::setPaging(bool mode) {
 	ASSERT(mode);		// TODO support turning paging off [if ever required?! who knows! :)]
 
 	_frameCount = (0x100000 + _upperMemory * 1024) / 0x1000;
@@ -65,7 +65,7 @@ void AkariMemorySubsystem::setPaging(bool mode) {
 	for (u32 i = KHEAP_START; i &lt; KHEAP_START + KHEAP_INITIAL_SIZE; i += 0x1000)
 		_kernelDirectory-&gt;getPage(i, true)-&gt;allocAnyFrame(false, KERNEL_HEAP_PROMISC);
 
-	Akari-&gt;Descriptor-&gt;idt-&gt;installHandler(14, this-&gt;PageFault);
+	Akari-&gt;descriptor-&gt;idt-&gt;installHandler(14, this-&gt;PageFault);
 
 	switchPageDirectory(_kernelDirectory);
 	_heap = new Heap(KHEAP_START, KHEAP_START + KHEAP_INITIAL_SIZE, 0xCFFFF000, false, !(KERNEL_HEAP_PROMISC));
@@ -75,7 +75,7 @@ void AkariMemorySubsystem::setPaging(bool mode) {
 	// SwitchPageDirectory(_activeDirectory);
 }
 
-void *AkariMemorySubsystem::alloc(u32 n, u32 *phys) {
+void *Memory::alloc(u32 n, u32 *phys) {
 	if (!_placementAddress) {
 		ASSERT(_heap);
 		void *addr = _heap-&gt;alloc(n);
@@ -97,7 +97,7 @@ void *AkariMemorySubsystem::alloc(u32 n, u32 *phys) {
 	return (void *)addr;
 }
 
-void *AkariMemorySubsystem::allocAligned(u32 n, u32 *phys) {
+void *Memory::allocAligned(u32 n, u32 *phys) {
 	if (!_placementAddress) {
 		ASSERT(_heap);
 		void *addr = _heap-&gt;allocAligned(n);
@@ -122,17 +122,17 @@ void *AkariMemorySubsystem::allocAligned(u32 n, u32 *phys) {
 	return (void *)addr;
 }
 
-void AkariMemorySubsystem::free(void *p) {
+void Memory::free(void *p) {
 	if (!_placementAddress) {
 		ASSERT(_heap);
 		// AkariPanic(&quot;implement Free() for heaps&quot;);
 		return;
 	}
 	
-	AkariPanic(&quot;AkariMemorySubsystem: tried to Free() in placement mode&quot;);
+	AkariPanic(&quot;Memory: tried to Free() in placement mode&quot;);
 }
 
-void *AkariMemorySubsystem::PageFault(struct modeswitch_registers *r) {
+void *Memory::PageFault(struct modeswitch_registers *r) {
 	u32 faultingAddress;
 	__asm__ __volatile__(&quot;mov %%cr2, %0&quot; : &quot;=r&quot; (faultingAddress));
 
@@ -142,16 +142,16 @@ void *AkariMemorySubsystem::PageFault(struct modeswitch_registers *r) {
 	bool reserved = 	r-&gt;callback.err_code &amp; 0x8;
 	bool insFetch = 	r-&gt;callback.err_code &amp; 0x10;
 
-	Akari-&gt;Console-&gt;putString(&quot;\nPage fault!\n&quot;);
-	if (notPresent) Akari-&gt;Console-&gt;putString(&quot; * Page wasn't present.\n&quot;);
-	if (writeOp) 	Akari-&gt;Console-&gt;putString(&quot; * Write operation.\n&quot;);
-	if (userMode) 	Akari-&gt;Console-&gt;putString(&quot; * From user-mode.\n&quot;);
-	if (reserved) 	Akari-&gt;Console-&gt;putString(&quot; * Clobbered reserved bits in page.\n&quot;);
-	if (insFetch) 	Akari-&gt;Console-&gt;putString(&quot; * On instruction fetch.\n&quot;);
+	Akari-&gt;console-&gt;putString(&quot;\nPage fault!\n&quot;);
+	if (notPresent) Akari-&gt;console-&gt;putString(&quot; * Page wasn't present.\n&quot;);
+	if (writeOp) 	Akari-&gt;console-&gt;putString(&quot; * Write operation.\n&quot;);
+	if (userMode) 	Akari-&gt;console-&gt;putString(&quot; * From user-mode.\n&quot;);
+	if (reserved) 	Akari-&gt;console-&gt;putString(&quot; * Clobbered reserved bits in page.\n&quot;);
+	if (insFetch) 	Akari-&gt;console-&gt;putString(&quot; * On instruction fetch.\n&quot;);
 
-	Akari-&gt;Console-&gt;putString(&quot;Address: 0x&quot;);
-	Akari-&gt;Console-&gt;putInt(faultingAddress, 16);
-	Akari-&gt;Console-&gt;putChar('\n');
+	Akari-&gt;console-&gt;putString(&quot;Address: 0x&quot;);
+	Akari-&gt;console-&gt;putInt(faultingAddress, 16);
+	Akari-&gt;console-&gt;putChar('\n');
 
 	while (1)
 		__asm__ __volatile__(&quot;hlt&quot;);
@@ -159,7 +159,7 @@ void *AkariMemorySubsystem::PageFault(struct modeswitch_registers *r) {
 	return 0;
 }
 
-void AkariMemorySubsystem::switchPageDirectory(PageDirectory *dir) {
+void Memory::switchPageDirectory(PageDirectory *dir) {
 	u32 phys = dir-&gt;physicalAddr;
 	_activeDirectory = dir;
 
@@ -175,28 +175,28 @@ void AkariMemorySubsystem::switchPageDirectory(PageDirectory *dir) {
 	// XXX do we always necessarily want to use $8 with ljmp here?
 }
 
-void AkariMemorySubsystem::setFrame(u32 addr) {
+void Memory::setFrame(u32 addr) {
 	u32 frame = addr / 0x1000;
 	u32 idx = INDEX_BIT(frame), off = OFFSET_BIT(frame);
 	ASSERT(idx &lt; INDEX_BIT(_frameCount));
 	_frames[idx] |= (1 &lt;&lt; off);
 }
 
-void AkariMemorySubsystem::clearFrame(u32 addr) {
+void Memory::clearFrame(u32 addr) {
 	u32 frame = addr / 0x1000;
 	u32 idx = INDEX_BIT(frame), off = OFFSET_BIT(frame);
 	ASSERT(idx &lt; INDEX_BIT(_frameCount));
 	_frames[idx] &amp;= ~(1 &lt;&lt; off);
 }
 
-bool AkariMemorySubsystem::testFrame(u32 addr) const {
+bool Memory::testFrame(u32 addr) const {
 	u32 frame = addr / 0x1000;
 	u32 idx = INDEX_BIT(frame), off = OFFSET_BIT(frame);
 	ASSERT(idx &lt; INDEX_BIT(_frameCount));
 	return (_frames[idx] &amp; (1 &lt;&lt; off));
 }
 
-u32 AkariMemorySubsystem::freeFrame() const {
+u32 Memory::freeFrame() const {
 	for (u32 i = 0; i &lt; INDEX_BIT(_frameCount); ++i)
 		if (_frames[i] != 0xFFFFFFFF) {
 			for (u32 j = 0; j &lt; 32; ++j)
@@ -210,7 +210,7 @@ u32 AkariMemorySubsystem::freeFrame() const {
 
 // Heap
 
-AkariMemorySubsystem::Heap::Heap(u32 start, u32 end, u32 max, bool supervisor, bool readonly):
+Memory::Heap::Heap(u32 start, u32 end, u32 max, bool supervisor, bool readonly):
 _index((Entry *)start, HEAP_INDEX_SIZE, IndexSort),
 _start(start), _end(end), _max(max), _supervisor(supervisor), _readonly(readonly)
 {
@@ -231,7 +231,7 @@ _start(start), _end(end), _max(max), _supervisor(supervisor), _readonly(readonly
 	ASSERT(_index[0].isHole);
 }
 
-void *AkariMemorySubsystem::Heap::alloc(u32 n) {
+void *Memory::Heap::alloc(u32 n) {
 	s32 it = smallestHole(n);
 	ASSERT(it &gt;= 0);		// TODO: resize instead
 
@@ -253,7 +253,7 @@ void *AkariMemorySubsystem::Heap::alloc(u32 n) {
 	return (void *)dataStart;
 }
 
-void *AkariMemorySubsystem::Heap::allocAligned(u32 n) {
+void *Memory::Heap::allocAligned(u32 n) {
 	s32 it = smallestAlignedHole(n);
 	ASSERT(it &gt;= 0);		// TODO: resize instead
 
@@ -291,15 +291,15 @@ void *AkariMemorySubsystem::Heap::allocAligned(u32 n) {
 	return (void *)dataStart;
 }
 
-AkariMemorySubsystem::Heap::Entry::Entry(u32 start, u32 size, bool isHole):
+Memory::Heap::Entry::Entry(u32 start, u32 size, bool isHole):
 start(start), size(size), isHole(isHole)
 { }
 
-bool AkariMemorySubsystem::Heap::IndexSort(const Entry &amp;a, const Entry &amp;b) {
+bool Memory::Heap::IndexSort(const Entry &amp;a, const Entry &amp;b) {
 	return a.size &lt; b.size;
 }
 
-s32 AkariMemorySubsystem::Heap::smallestHole(u32 n) const {
+s32 Memory::Heap::smallestHole(u32 n) const {
 	u32 it = 0;
 	ASSERT(_index.size() &gt; 0);
 
@@ -317,7 +317,7 @@ s32 AkariMemorySubsystem::Heap::smallestHole(u32 n) const {
 	return -1;
 }
 
-s32 AkariMemorySubsystem::Heap::smallestAlignedHole(u32 n) const {
+s32 Memory::Heap::smallestAlignedHole(u32 n) const {
 	u32 it = 0;
 	while (it &lt; _index.size()) {
 		const Entry &amp;entry = _index[it];
@@ -343,21 +343,21 @@ s32 AkariMemorySubsystem::Heap::smallestAlignedHole(u32 n) const {
 
 // Page
 
-void AkariMemorySubsystem::Page::allocAnyFrame(bool kernel, bool writeable) {
+void Memory::Page::allocAnyFrame(bool kernel, bool writeable) {
 	ASSERT(!pageAddress);
 
-	u32 addr = Akari-&gt;Memory-&gt;freeFrame();
-	Akari-&gt;Memory-&gt;setFrame(addr);
+	u32 addr = Akari-&gt;memory-&gt;freeFrame();
+	Akari-&gt;memory-&gt;setFrame(addr);
 	present = true;
 	readwrite = writeable;
 	user = !kernel;
 	pageAddress = addr / 0x1000;
 }
 
-void AkariMemorySubsystem::Page::allocFrame(u32 addr, bool kernel, bool writeable) {
+void Memory::Page::allocFrame(u32 addr, bool kernel, bool writeable) {
 	ASSERT(!pageAddress);
 
-	Akari-&gt;Memory-&gt;setFrame(addr);
+	Akari-&gt;memory-&gt;setFrame(addr);
 	present = true;
 	readwrite = writeable;
 	user = !kernel;
@@ -366,13 +366,13 @@ void AkariMemorySubsystem::Page::allocFrame(u32 addr, bool kernel, bool writeabl
 
 // PageTable
 
-AkariMemorySubsystem::PageTable *AkariMemorySubsystem::PageTable::Allocate(u32 *phys) {
-	PageTable *table = (PageTable *)Akari-&gt;Memory-&gt;allocAligned(sizeof(PageTable), phys);
+Memory::PageTable *Memory::PageTable::Allocate(u32 *phys) {
+	PageTable *table = (PageTable *)Akari-&gt;memory-&gt;allocAligned(sizeof(PageTable), phys);
 	POSIX::memset(table, 0, sizeof(PageTable));
 	return table;
 }
 
-AkariMemorySubsystem::PageTable *AkariMemorySubsystem::PageTable::clone(u32 *phys) const {
+Memory::PageTable *Memory::PageTable::clone(u32 *phys) const {
 	// TODO: review this
 	PageTable *t = PageTable::Allocate(phys);
 
@@ -397,10 +397,10 @@ AkariMemorySubsystem::PageTable *AkariMemorySubsystem::PageTable::clone(u32 *phy
 
 // PageDirectory
 
-AkariMemorySubsystem::PageDirectory *AkariMemorySubsystem::PageDirectory::Allocate() {
+Memory::PageDirectory *Memory::PageDirectory::Allocate() {
 	u32 phys;
 
-	PageDirectory *dir = (PageDirectory *)Akari-&gt;Memory-&gt;allocAligned(sizeof(PageDirectory), &amp;phys);
+	PageDirectory *dir = (PageDirectory *)Akari-&gt;memory-&gt;allocAligned(sizeof(PageDirectory), &amp;phys);
 	POSIX::memset(dir, 0, sizeof(PageDirectory));
 	u32 off = (u32)dir-&gt;tablePhysicals - (u32)dir;
 	dir-&gt;physicalAddr = phys + off;						// check above
@@ -408,7 +408,7 @@ AkariMemorySubsystem::PageDirectory *AkariMemorySubsystem::PageDirectory::Alloca
 	return dir;
 }
 
-AkariMemorySubsystem::Page *AkariMemorySubsystem::PageDirectory::getPage(u32 addr, bool make) {
+Memory::Page *Memory::PageDirectory::getPage(u32 addr, bool make) {
 	addr /= 0x1000;
 
 	u32 idx = addr / 1024, entry = addr % 1024;
@@ -424,14 +424,14 @@ AkariMemorySubsystem::Page *AkariMemorySubsystem::PageDirectory::getPage(u32 add
 	return 0;
 }
 
-AkariMemorySubsystem::PageDirectory *AkariMemorySubsystem::PageDirectory::clone() const {
+Memory::PageDirectory *Memory::PageDirectory::clone() const {
 	// TODO: review this code
 	PageDirectory *d = PageDirectory::Allocate();
 
 	for (u32 i = 0; i &lt; 1024; ++i) {
 		if (!tables[i])
 			continue;
-		if (Akari-&gt;Memory-&gt;_kernelDirectory-&gt;tables[i] == tables[i]) {
+		if (Akari-&gt;memory-&gt;_kernelDirectory-&gt;tables[i] == tables[i]) {
 			// kernel has this table, so just link it
 			d-&gt;tables[i] = tables[i];
 			d-&gt;tablePhysicals[i] = tablePhysicals[i];</diff>
      <filename>Memory.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
-#include &lt;AkariSubsystem.hpp&gt;
+#include &lt;Subsystem.hpp&gt;
 
-AkariSubsystem::AkariSubsystem()
+Subsystem::Subsystem()
 { }
 
-AkariSubsystem::~AkariSubsystem()
+Subsystem::~Subsystem()
 { }</diff>
      <filename>Subsystem.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,9 @@
-#include &lt;AkariSyscallSubsystem.hpp&gt;
+#include &lt;Syscall.hpp&gt;
 #include &lt;Akari.hpp&gt;
 #include &lt;UserCalls.hpp&gt;
 
-AkariSyscallSubsystem::AkariSyscallSubsystem(): _syscalls_assigned(0) {
-	Akari-&gt;Descriptor-&gt;idt-&gt;installHandler(0x80, &amp;AkariSyscallSubsystem::_handler);
+Syscall::Syscall(): _syscalls_assigned(0) {
+	Akari-&gt;descriptor-&gt;idt-&gt;installHandler(0x80, &amp;Syscall::_handler);
 
 	addSyscall(0, (void *)&amp;User::putc);
 	addSyscall(1, (void *)&amp;User::puts);
@@ -17,37 +17,37 @@ AkariSyscallSubsystem::AkariSyscallSubsystem(): _syscalls_assigned(0) {
 	addSyscall(9, (void *)&amp;User::exit);
 }
 
-u8 AkariSyscallSubsystem::versionMajor() const { return 0; }
-u8 AkariSyscallSubsystem::versionMinor() const { return 1; }
-const char *AkariSyscallSubsystem::versionManufacturer() const { return &quot;Akari&quot;; }
-const char *AkariSyscallSubsystem::versionProduct() const { return &quot;Akari Syscall&quot;; }
+u8 Syscall::versionMajor() const { return 0; }
+u8 Syscall::versionMinor() const { return 1; }
+const char *Syscall::versionManufacturer() const { return &quot;Akari&quot;; }
+const char *Syscall::versionProduct() const { return &quot;Akari Syscall&quot;; }
 
-void AkariSyscallSubsystem::addSyscall(u16 num, void *fn) {
+void Syscall::addSyscall(u16 num, void *fn) {
 	_syscalls[num] = fn;
 }
 
-void AkariSyscallSubsystem::returnToTask(AkariTaskSubsystem::Task *task) {
+void Syscall::returnToTask(Tasks::Task *task) {
 	_returnTask = task;
 }
 
-void AkariSyscallSubsystem::returnToNextTask() {
-	AkariTaskSubsystem::Task *nextTask = Akari-&gt;Task-&gt;getNextTask();
-	if (nextTask == Akari-&gt;Task-&gt;current) {
+void Syscall::returnToNextTask() {
+	Tasks::Task *nextTask = Akari-&gt;tasks-&gt;getNextTask();
+	if (nextTask == Akari-&gt;tasks-&gt;current) {
 		AkariPanic(&quot;TODO: let no 'active' processes being running. i.e. have the ukernel HLT or similar.&quot;);
 	}
 		
 	returnToTask(nextTask);
 }
 
-void *AkariSyscallSubsystem::_handler(struct modeswitch_registers *regs) {
+void *Syscall::_handler(struct modeswitch_registers *regs) {
 	if (regs-&gt;callback.eax &gt;= AKARI_SYSCALL_MAXCALLS)
 		AkariPanic(&quot;System call greater than maximum requested. TODO: kill requesting process.&quot;);
-	if (!Akari-&gt;Syscall-&gt;_syscalls[regs-&gt;callback.eax])
+	if (!Akari-&gt;syscall-&gt;_syscalls[regs-&gt;callback.eax])
 		AkariPanic(&quot;Non-existing system call requested.&quot;);
 
-	Akari-&gt;Syscall-&gt;_returnTask = 0;
+	Akari-&gt;syscall-&gt;_returnTask = 0;
 
-	void *call = Akari-&gt;Syscall-&gt;_syscalls[regs-&gt;callback.eax];
+	void *call = Akari-&gt;syscall-&gt;_syscalls[regs-&gt;callback.eax];
     int ret;
     asm volatile(&quot;  \
         push %1; \
@@ -68,10 +68,10 @@ void *AkariSyscallSubsystem::_handler(struct modeswitch_registers *regs) {
 
     regs-&gt;callback.eax = ret;
 
-	if (Akari-&gt;Syscall-&gt;_returnTask) {
-		Akari-&gt;Task-&gt;saveRegisterToTask(Akari-&gt;Task-&gt;current, regs);
-		Akari-&gt;Task-&gt;current = Akari-&gt;Syscall-&gt;_returnTask;
-		return Akari-&gt;Task-&gt;assignInternalTask(Akari-&gt;Task-&gt;current);
+	if (Akari-&gt;syscall-&gt;_returnTask) {
+		Akari-&gt;tasks-&gt;saveRegisterToTask(Akari-&gt;tasks-&gt;current, regs);
+		Akari-&gt;tasks-&gt;current = Akari-&gt;syscall-&gt;_returnTask;
+		return Akari-&gt;tasks-&gt;assignInternalTask(Akari-&gt;tasks-&gt;current);
 	}
 
 	return regs;</diff>
      <filename>Syscall.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,15 +1,15 @@
-#include &lt;AkariTimerSubsystem.hpp&gt;
+#include &lt;Timer.hpp&gt;
 #include &lt;arch.hpp&gt;
 
-AkariTimerSubsystem::AkariTimerSubsystem()
+Timer::Timer()
 { }
 
-u8 AkariTimerSubsystem::versionMajor() const { return 0; }
-u8 AkariTimerSubsystem::versionMinor() const { return 1; }
-const char *AkariTimerSubsystem::versionManufacturer() const { return &quot;Akari&quot;; }
-const char *AkariTimerSubsystem::versionProduct() const { return &quot;Akari Timer Manager&quot;; }
+u8 Timer::versionMajor() const { return 0; }
+u8 Timer::versionMinor() const { return 1; }
+const char *Timer::versionManufacturer() const { return &quot;Akari&quot;; }
+const char *Timer::versionProduct() const { return &quot;Akari Timer Manager&quot;; }
 
-void AkariTimerSubsystem::setTimer(u16 hz) {
+void Timer::setTimer(u16 hz) {
 	u16 r = 0x1234dc / hz;
 	AkariOutB(0x43, 0x36);		// 0b00110110; not BCD, square, LSB+MSB, c0
 	AkariOutB(0x40, r &amp; 0xFF);</diff>
      <filename>Timer.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -92,7 +92,7 @@ void KeyboardProcess() {
 
 	u8 scancode = AkariInB(0x60);
 	while (1) {
-		Akari-&gt;Console-&gt;putString(&quot;This is the Captain speaking.&quot;);
+		Akari-&gt;console-&gt;putString(&quot;This is the Captain speaking.&quot;);
 		if (scancode &amp; 0x80) {
 			// release
 			scancode &amp;= ~0x80;</diff>
      <filename>TmpKb.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -4,34 +4,34 @@
 
 namespace User {
 	void putc(char c) {
-		Akari-&gt;Console-&gt;putChar(c);
+		Akari-&gt;console-&gt;putChar(c);
 	}
 
 	void puts(const char *s) {
-		Akari-&gt;Console-&gt;putString(s);
+		Akari-&gt;console-&gt;putString(s);
 	}
 
 	void putl(u32 n, u8 base) {
-		Akari-&gt;Console-&gt;putInt(n, base);
+		Akari-&gt;console-&gt;putInt(n, base);
 	}
 	u32 getProcessId() {
-		return Akari-&gt;Task-&gt;current-&gt;id;
+		return Akari-&gt;tasks-&gt;current-&gt;id;
 	}
 
 	void irqWait() {
-		if (Akari-&gt;Task-&gt;current-&gt;irqListenHits == 0) {
-			Akari-&gt;Task-&gt;current-&gt;irqWaiting = true;
+		if (Akari-&gt;tasks-&gt;current-&gt;irqListenHits == 0) {
+			Akari-&gt;tasks-&gt;current-&gt;irqWaiting = true;
 
-			Akari-&gt;Syscall-&gt;returnToNextTask();
+			Akari-&gt;syscall-&gt;returnToNextTask();
 			return;
 		}
 
-		Akari-&gt;Task-&gt;current-&gt;irqListenHits--;
+		Akari-&gt;tasks-&gt;current-&gt;irqListenHits--;
 	}
 
 	void irqListen(u32 irq) {
-		Akari-&gt;Task-&gt;current-&gt;irqListen = irq;
-		Akari-&gt;Task-&gt;current-&gt;irqListenHits = 0;
+		Akari-&gt;tasks-&gt;current-&gt;irqListen = irq;
+		Akari-&gt;tasks-&gt;current-&gt;irqListenHits = 0;
 	}
 
 
@@ -44,45 +44,45 @@ namespace User {
 	}
 
 	bool registerName(const char *name) {
-		if (Akari-&gt;Task-&gt;registeredTasks-&gt;hasKey(name))
+		if (Akari-&gt;tasks-&gt;registeredTasks-&gt;hasKey(name))
 			return false;
 
-		(*Akari-&gt;Task-&gt;registeredTasks)[name] = Akari-&gt;Task-&gt;current;
-		Akari-&gt;Task-&gt;current-&gt;registeredName = name;
+		(*Akari-&gt;tasks-&gt;registeredTasks)[name] = Akari-&gt;tasks-&gt;current;
+		Akari-&gt;tasks-&gt;current-&gt;registeredName = name;
 		return true;
 	}
 
 	bool registerNode(const char *name) {
-		if (!Akari-&gt;Task-&gt;current-&gt;registeredName) {
+		if (!Akari-&gt;tasks-&gt;current-&gt;registeredName) {
 			// TODO: just kill the process, don't kill the system.
 			// TODO: is this correct behaviour? Or could we have registered nodes
 			// on no particular name? Why not?.. think about it.
 			AkariPanic(&quot;name not registered - cannot register node&quot;);
 		}
 
-		if (Akari-&gt;Task-&gt;current-&gt;nodesByName-&gt;hasKey(name)) {
+		if (Akari-&gt;tasks-&gt;current-&gt;nodesByName-&gt;hasKey(name)) {
 			AkariPanic(&quot;node already registered - cannot register atop it&quot;);
 		}
 
-		AkariTaskSubsystem::Task::Node *node = new AkariTaskSubsystem::Task::Node();
+		Tasks::Task::Node *node = new Tasks::Task::Node();
 
-		(*Akari-&gt;Task-&gt;current-&gt;nodesByName)[name] = node;
+		(*Akari-&gt;tasks-&gt;current-&gt;nodesByName)[name] = node;
 		return true;
 	}
 
 	void exit() {
-		Akari-&gt;Syscall-&gt;returnToNextTask();
-		// Find the Task* which refers to Akari-&gt;Task-&gt;current, and get it to skip it.
-		AkariTaskSubsystem::Task **scanner = &amp;Akari-&gt;Task-&gt;start;
-		while (*scanner != Akari-&gt;Task-&gt;current) {
+		Akari-&gt;syscall-&gt;returnToNextTask();
+		// Find the Task* which refers to Akari-&gt;tasks-&gt;current, and get it to skip it.
+		Tasks::Task **scanner = &amp;Akari-&gt;tasks-&gt;start;
+		while (*scanner != Akari-&gt;tasks-&gt;current) {
 			scanner = &amp;(*scanner)-&gt;next;
 		}
 
-		Akari-&gt;Console-&gt;putString(&quot;exit(): 0x&quot;);
-		Akari-&gt;Console-&gt;putInt((u32)*scanner, 16);
-		Akari-&gt;Console-&gt;putString(&quot; -&gt; 0x&quot;);
-		Akari-&gt;Console-&gt;putInt((u32)(*scanner)-&gt;next, 16);
-		Akari-&gt;Console-&gt;putString(&quot;\n&quot;);
+		Akari-&gt;console-&gt;putString(&quot;exit(): 0x&quot;);
+		Akari-&gt;console-&gt;putInt((u32)*scanner, 16);
+		Akari-&gt;console-&gt;putString(&quot; -&gt; 0x&quot;);
+		Akari-&gt;console-&gt;putInt((u32)(*scanner)-&gt;next, 16);
+		Akari-&gt;console-&gt;putString(&quot;\n&quot;);
 
 		*scanner = (*scanner)-&gt;next;
 		// Gone! XXX what happens when the last task exists!? Everything probably goes to hell ...</diff>
      <filename>UserCalls.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -42,7 +42,7 @@
         return a; \
     }
 
-// Here we define the user-mode functions, matching them to the number in the _syscalls array (see AkariSyscallSubsystem).
+// Here we define the user-mode functions, matching them to the number in the _syscalls array (see Syscall).
 
 DEFN_SYSCALL1(putc, 0, char);
 DEFN_SYSCALL1(puts, 1, const char *);</diff>
      <filename>UserGates.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -28,14 +28,14 @@ void __cxa_pure_virtual() {
 
 void *operator new(size_t n) {
 	ASSERT(Akari);
-	ASSERT(Akari-&gt;Memory);
-	return Akari-&gt;Memory-&gt;alloc(n);
+	ASSERT(Akari-&gt;memory);
+	return Akari-&gt;memory-&gt;alloc(n);
 }
 
 void *operator new[](size_t n) {
 	ASSERT(Akari);
-	ASSERT(Akari-&gt;Memory);
-	return Akari-&gt;Memory-&gt;alloc(n);
+	ASSERT(Akari-&gt;memory);
+	return Akari-&gt;memory-&gt;alloc(n);
 }
 
 void *operator new(size_t, void *p) {
@@ -44,13 +44,13 @@ void *operator new(size_t, void *p) {
 
 void operator delete(void *p) {
 	ASSERT(Akari);
-	ASSERT(Akari-&gt;Memory);
-	return Akari-&gt;Memory-&gt;free(p);
+	ASSERT(Akari-&gt;memory);
+	return Akari-&gt;memory-&gt;free(p);
 }
 
 void operator delete[](void *p) {
 	// These assertions seem quite wasteful.
 	ASSERT(Akari);
-	ASSERT(Akari-&gt;Memory);
-	return Akari-&gt;Memory-&gt;free(p);
+	ASSERT(Akari-&gt;memory);
+	return Akari-&gt;memory-&gt;free(p);
 }</diff>
      <filename>arch.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -21,23 +21,23 @@ void AkariEntry() {
 	if ((AkariMultiboot-&gt;flags &amp; 0x41) != 0x41)
 		AkariPanic(&quot;Akari: MULTIBOOT hasn't given us enough information about memory.&quot;);
 
-	Akari = AkariKernel::Construct((u32)&amp;__kend, AkariMultiboot-&gt;mem_upper);
+	Akari = Kernel::Construct((u32)&amp;__kend, AkariMultiboot-&gt;mem_upper);
 
 	// these can only work if Akari = an AkariKernel, since `new' calls Akari-&gt;...
 	// how could we integrate these with construction in AkariKernel::Construct
 	// without just doing it all by using placement new with kernel-&gt;Alloc?
 	// (which is lame)
-	Akari-&gt;Console = new AkariConsoleSubsystem();
-	Akari-&gt;Descriptor = new AkariDescriptorSubsystem();
-	Akari-&gt;Timer = new AkariTimerSubsystem();
-	Akari-&gt;Task = new AkariTaskSubsystem();
-	Akari-&gt;Syscall = new AkariSyscallSubsystem();
-
-	Akari-&gt;Timer-&gt;setTimer(100);
-	Akari-&gt;Memory-&gt;setPaging(true);
+	Akari-&gt;console = new Console();
+	Akari-&gt;descriptor = new Descriptor();
+	Akari-&gt;timer = new Timer();
+	Akari-&gt;tasks = new Tasks();
+	Akari-&gt;syscall = new Syscall();
+
+	Akari-&gt;timer-&gt;setTimer(100);
+	Akari-&gt;memory-&gt;setPaging(true);
 	
 	// Give ourselves a normal stack. (n.b. this is from kernel heap!)
-	void *IdleTaskStack = Akari-&gt;Memory-&gt;allocAligned(IDLE_STACK_SIZE);
+	void *IdleTaskStack = Akari-&gt;memory-&gt;allocAligned(IDLE_STACK_SIZE);
 	// do we still need to flush the TLB?
 	__asm__ __volatile__(&quot;\
 		mov %%cr3, %%eax; \
@@ -50,38 +50,38 @@ void AkariEntry() {
 }
 
 static void AkariEntryCont() {	
-	ASSERT(Akari-&gt;Memory-&gt;_activeDirectory == Akari-&gt;Memory-&gt;_kernelDirectory);
+	ASSERT(Akari-&gt;memory-&gt;_activeDirectory == Akari-&gt;memory-&gt;_kernelDirectory);
 	for (u32 i = UKERNEL_STACK_POS; i &gt;= UKERNEL_STACK_POS - UKERNEL_STACK_SIZE; i -= 0x1000)
-		Akari-&gt;Memory-&gt;_activeDirectory-&gt;getPage(i, true)-&gt;allocAnyFrame(false, true);
+		Akari-&gt;memory-&gt;_activeDirectory-&gt;getPage(i, true)-&gt;allocAnyFrame(false, true);
 
-	AkariTaskSubsystem::Task *base = AkariTaskSubsystem::Task::BootstrapInitialTask(
-		3, Akari-&gt;Memory-&gt;_kernelDirectory);
-	Akari-&gt;Task-&gt;start = Akari-&gt;Task-&gt;current = base;
+	Tasks::Task *base = Tasks::Task::BootstrapInitialTask(
+		3, Akari-&gt;memory-&gt;_kernelDirectory);
+	Akari-&gt;tasks-&gt;start = Akari-&gt;tasks-&gt;current = base;
 
-	Akari-&gt;Descriptor-&gt;gdt-&gt;setTSSStack(base-&gt;utks + sizeof(struct modeswitch_registers));
-	Akari-&gt;Descriptor-&gt;gdt-&gt;setTSSIOMap(base-&gt;iomap);
+	Akari-&gt;descriptor-&gt;gdt-&gt;setTSSStack(base-&gt;utks + sizeof(struct modeswitch_registers));
+	Akari-&gt;descriptor-&gt;gdt-&gt;setTSSIOMap(base-&gt;iomap);
 
 	// Idle task
-	AkariTaskSubsystem::Task *idle = AkariTaskSubsystem::Task::CreateTask(
-		(u32)&amp;IdleProcess, 0, true, 0, Akari-&gt;Memory-&gt;_kernelDirectory);
-	Akari-&gt;Task-&gt;current-&gt;next = idle;
+	Tasks::Task *idle = Tasks::Task::CreateTask(
+		(u32)&amp;IdleProcess, 0, true, 0, Akari-&gt;memory-&gt;_kernelDirectory);
+	Akari-&gt;tasks-&gt;current-&gt;next = idle;
 
 	// Keyboard driver task
-	AkariTaskSubsystem::Task *kbdriver = AkariTaskSubsystem::Task::CreateTask(
-		(u32)&amp;KeyboardProcess, 1, true, 0, Akari-&gt;Memory-&gt;_kernelDirectory);
+	Tasks::Task *kbdriver = Tasks::Task::CreateTask(
+		(u32)&amp;KeyboardProcess, 1, true, 0, Akari-&gt;memory-&gt;_kernelDirectory);
 	kbdriver-&gt;setIOMap(0x60, true);
 	kbdriver-&gt;setIOMap(0x64, true);
 	idle-&gt;next = kbdriver;
 
 	// Hello shell!
-	AkariTaskSubsystem::Task *shell = AkariTaskSubsystem::Task::CreateTask(
-		(u32)&amp;ShellProcess, 0, true, 0, Akari-&gt;Memory-&gt;_kernelDirectory);
+	Tasks::Task *shell = Tasks::Task::CreateTask(
+		(u32)&amp;ShellProcess, 0, true, 0, Akari-&gt;memory-&gt;_kernelDirectory);
 	kbdriver-&gt;next = shell;
 	
 	// Now we need our own directory! BootstrapTask should've been nice enough to make us one anyway.
-	Akari-&gt;Memory-&gt;switchPageDirectory(base-&gt;pageDir);
+	Akari-&gt;memory-&gt;switchPageDirectory(base-&gt;pageDir);
 
-	AkariTaskSubsystem::SwitchRing(3, 0); // switches to ring 3, uses IOPL 0 (no I/O access unless iomap gives it) and enables interrupts.
+	Tasks::SwitchRing(3, 0); // switches to ring 3, uses IOPL 0 (no I/O access unless iomap gives it) and enables interrupts.
 
 	// We have a proper (kernel-mode) idle task we spawn above that hlts.
 	syscall_exit();
@@ -89,7 +89,7 @@ static void AkariEntryCont() {
 
 // Returns how much the stack needs to be shifted.
 void *AkariMicrokernel(struct modeswitch_registers *r) {
-	Akari-&gt;Task-&gt;saveRegisterToTask(Akari-&gt;Task-&gt;current, r);
-	Akari-&gt;Task-&gt;cycleTask();
-	return Akari-&gt;Task-&gt;assignInternalTask(Akari-&gt;Task-&gt;current);
+	Akari-&gt;tasks-&gt;saveRegisterToTask(Akari-&gt;tasks-&gt;current, r);
+	Akari-&gt;tasks-&gt;cycleTask();
+	return Akari-&gt;tasks-&gt;assignInternalTask(Akari-&gt;tasks-&gt;current);
 }</diff>
      <filename>entry.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,35 +1,35 @@
 #ifndef __AKARI_HPP__
 #define __AKARI_HPP__
 
-#include &lt;AkariMemorySubsystem.hpp&gt;
-#include &lt;AkariConsoleSubsystem.hpp&gt;
-#include &lt;AkariDescriptorSubsystem.hpp&gt;
-#include &lt;AkariTimerSubsystem.hpp&gt;
-#include &lt;AkariTaskSubsystem.hpp&gt;
-#include &lt;AkariSyscallSubsystem.hpp&gt;
+#include &lt;Memory.hpp&gt;
+#include &lt;Console.hpp&gt;
+#include &lt;Descriptor.hpp&gt;
+#include &lt;Timer.hpp&gt;
+#include &lt;Tasks.hpp&gt;
+#include &lt;Syscall.hpp&gt;
 
 /**
  * The base class for the kernel services.
  */
 
-class AkariKernel {
+class Kernel {
 	public:
-		static AkariKernel *Construct(u32, u32);
+		static Kernel *Construct(u32, u32);
 
-		// TODO: linked list of AkariSubsystems so we can iterate them generically.
+		// TODO: linked list of Subsystems so we can iterate them generically.
 
-		AkariMemorySubsystem *Memory;
-		AkariConsoleSubsystem *Console;
-		AkariDescriptorSubsystem *Descriptor;
-		AkariTimerSubsystem *Timer;
-		AkariTaskSubsystem *Task;
-		AkariSyscallSubsystem *Syscall;
+		Memory *memory;
+		Console *console;
+		Descriptor *descriptor;
+		Timer *timer;
+		Tasks *tasks;
+		Syscall *syscall;
 	
 	protected:
-		AkariKernel();
+		Kernel();
 };
 
-extern AkariKernel *Akari;
+extern Kernel *Akari;
 
 #endif
 </diff>
      <filename>inc/Akari.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,12 @@
-#ifndef __AKARI_CONSOLE_SUBSYSTEM_HPP__
-#define __AKARI_CONSOLE_SUBSYSTEM_HPP__
+#ifndef __CONSOLE_HPP__
+#define __CONSOLE_HPP__
 
-#include &lt;AkariSubsystem.hpp&gt;
+#include &lt;Subsystem.hpp&gt;
 
 // Direct implementation.
-class AkariConsoleSubsystem : public AkariSubsystem {
+class Console : public Subsystem {
 	public:
-		AkariConsoleSubsystem();
+		Console();
 
 		u8 versionMajor() const;
 		u8 versionMinor() const;</diff>
      <filename>inc/Console.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,14 @@
-#ifndef __AKARI_DESCRIPTOR_SUBSYSTEM_HPP__
-#define __AKARI_DESCRIPTOR_SUBSYSTEM_HPP__
+#ifndef __DESCRIPTOR_HPP__
+#define __DESCRIPTOR_HPP__
 
-#include &lt;AkariSubsystem.hpp&gt;
+#include &lt;Subsystem.hpp&gt;
 #include &lt;interrupts.hpp&gt;
 
 // the subsystem itself
 
-class AkariDescriptorSubsystem : public AkariSubsystem {
+class Descriptor : public Subsystem {
 	public:
-		AkariDescriptorSubsystem();
+		Descriptor();
 
 		u8 versionMajor() const;
 		u8 versionMinor() const;</diff>
      <filename>inc/Descriptor.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,12 @@
-#ifndef __AKARI_MEMORY_SUBSYSTEM_HPP__
-#define __AKARI_MEMORY_SUBSYSTEM_HPP__
+#ifndef __MEMORY_HPP__
+#define __MEMORY_HPP__
 
-#include &lt;AkariSubsystem.hpp&gt;
+#include &lt;Subsystem.hpp&gt;
 #include &lt;OrderedArray.hpp&gt;
 
-class AkariMemorySubsystem : public AkariSubsystem {
+class Memory : public Subsystem {
 	public:
-		AkariMemorySubsystem(u32);
+		Memory(u32);
 
 		u8 versionMajor() const;
 		u8 versionMinor() const;</diff>
      <filename>inc/Memory.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,12 @@
-#ifndef __AKARI_SUBSYSTEM_HPP__
-#define __AKARI_SUBSYSTEM_HPP__
+#ifndef __SUBSYSTEM_HPP__
+#define __SUBSYSTEM_HPP__
 
 #include &lt;arch.hpp&gt;
 
-class AkariSubsystem {
+class Subsystem {
 	public:
-		AkariSubsystem();
-		virtual ~AkariSubsystem();
+		Subsystem();
+		virtual ~Subsystem();
 
 		virtual u8 versionMajor() const = 0;
 		virtual u8 versionMinor() const = 0;</diff>
      <filename>inc/Subsystem.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,14 @@
-#ifndef __AKARI_SYSCALL_SUBSYSTEM_HPP__
-#define __AKARI_SYSCALL_SUBSYSTEM_HPP__
+#ifndef __SYSCALL_HPP__
+#define __SYSCALL_HPP__
 
-#include &lt;AkariSubsystem.hpp&gt;
-#include &lt;AkariTaskSubsystem.hpp&gt;
+#include &lt;Subsystem.hpp&gt;
+#include &lt;Tasks.hpp&gt;
 
 #define AKARI_SYSCALL_MAXCALLS 256
 
-class AkariSyscallSubsystem : public AkariSubsystem {
+class Syscall : public Subsystem {
 	public:
-		AkariSyscallSubsystem();
+		Syscall();
 
 		u8 versionMajor() const;
 		u8 versionMinor() const;
@@ -17,7 +17,7 @@ class AkariSyscallSubsystem : public AkariSubsystem {
 
 		void addSyscall(u16 num, void *fn);
 
-		void returnToTask(AkariTaskSubsystem::Task *task);
+		void returnToTask(Tasks::Task *task);
 		void returnToNextTask();
 
 	protected:
@@ -26,7 +26,7 @@ class AkariSyscallSubsystem : public AkariSubsystem {
 		void *_syscalls[AKARI_SYSCALL_MAXCALLS];
 		u16 _syscalls_assigned;
 
-		AkariTaskSubsystem::Task *_returnTask;
+		Tasks::Task *_returnTask;
 };
 
 #endif</diff>
      <filename>inc/Syscall.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
-#ifndef __AKARI_TIMER_SUBSYSTEM_HPP__
-#define __AKARI_TIMER_SUBSYSTEM_HPP__
+#ifndef __TIMER_HPP__
+#define __TIMER_HPP__
 
-#include &lt;AkariSubsystem.hpp&gt;
+#include &lt;Subsystem.hpp&gt;
 
-class AkariTimerSubsystem : public AkariSubsystem {
+class Timer : public Subsystem {
 	public:
-		AkariTimerSubsystem();
+		Timer();
 
 		u8 versionMajor() const;
 		u8 versionMinor() const;</diff>
      <filename>inc/Timer.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
-#ifndef __MEMORY_HPP__
-#define __MEMORY_HPP__
+#ifndef __PHYSMEM_HPP__
+#define __PHYSMEM_HPP__
 
 extern &quot;C&quot; void AkariCopyFramePhysical(u32 src, u32 dest);
 </diff>
      <filename>inc/physmem.hpp</filename>
    </modified>
    <modified>
      <diff>@@ -29,26 +29,26 @@ void *isr_handler(struct modeswitch_registers *r) {
 	ASSERT(r-&gt;callback.int_no &lt; 0x20 || r-&gt;callback.int_no &gt;= 0x30);
 	// I guess this is right? What other IDTs are there? Hm.
 
-	void *resume = Akari-&gt;Descriptor-&gt;idt-&gt;callHandler(r-&gt;callback.int_no, r);
+	void *resume = Akari-&gt;descriptor-&gt;idt-&gt;callHandler(r-&gt;callback.int_no, r);
 	if (!resume) {
 		// nothing to call!
-		Akari-&gt;Console-&gt;putChar('\n');
-		Akari-&gt;Console-&gt;putString((r-&gt;callback.int_no &lt; 32 &amp;&amp; isr_messages[r-&gt;callback.int_no]) ? isr_messages[r-&gt;callback.int_no] : &quot;[Intel reserved]&quot;);
-		Akari-&gt;Console-&gt;putString(&quot; exception occured!\n&quot;);
+		Akari-&gt;console-&gt;putChar('\n');
+		Akari-&gt;console-&gt;putString((r-&gt;callback.int_no &lt; 32 &amp;&amp; isr_messages[r-&gt;callback.int_no]) ? isr_messages[r-&gt;callback.int_no] : &quot;[Intel reserved]&quot;);
+		Akari-&gt;console-&gt;putString(&quot; exception occured!\n&quot;);
 
-		Akari-&gt;Console-&gt;putString(&quot;EIP: &quot;);
-		Akari-&gt;Console-&gt;putInt(r-&gt;callback.eip, 16);
-		Akari-&gt;Console-&gt;putString(&quot;, ESP: &quot;);
-		Akari-&gt;Console-&gt;putInt(r-&gt;callback.esp, 16);
-		Akari-&gt;Console-&gt;putString(&quot;, EBP: &quot;);
-		Akari-&gt;Console-&gt;putInt(r-&gt;callback.ebp, 16);
-		Akari-&gt;Console-&gt;putString(&quot;, CS: &quot;);
-		Akari-&gt;Console-&gt;putInt(r-&gt;callback.cs, 16);
-		Akari-&gt;Console-&gt;putString(&quot;, EFLAGS: &quot;);
-		Akari-&gt;Console-&gt;putInt(r-&gt;callback.eflags, 16);
-		Akari-&gt;Console-&gt;putString(&quot;, user ESP (may be garbage): &quot;);
-		Akari-&gt;Console-&gt;putInt(r-&gt;useresp, 16);
-		Akari-&gt;Console-&gt;putString(&quot;\n&quot;);
+		Akari-&gt;console-&gt;putString(&quot;EIP: &quot;);
+		Akari-&gt;console-&gt;putInt(r-&gt;callback.eip, 16);
+		Akari-&gt;console-&gt;putString(&quot;, ESP: &quot;);
+		Akari-&gt;console-&gt;putInt(r-&gt;callback.esp, 16);
+		Akari-&gt;console-&gt;putString(&quot;, EBP: &quot;);
+		Akari-&gt;console-&gt;putInt(r-&gt;callback.ebp, 16);
+		Akari-&gt;console-&gt;putString(&quot;, CS: &quot;);
+		Akari-&gt;console-&gt;putInt(r-&gt;callback.cs, 16);
+		Akari-&gt;console-&gt;putString(&quot;, EFLAGS: &quot;);
+		Akari-&gt;console-&gt;putInt(r-&gt;callback.eflags, 16);
+		Akari-&gt;console-&gt;putString(&quot;, user ESP (may be garbage): &quot;);
+		Akari-&gt;console-&gt;putInt(r-&gt;useresp, 16);
+		Akari-&gt;console-&gt;putString(&quot;\n&quot;);
 
 		while (1)
 			__asm__ __volatile__(&quot;hlt&quot;);
@@ -64,6 +64,6 @@ void *irq_handler(struct modeswitch_registers *r) {
 		AkariOutB(0xA0, 0x20);		// EOI to slave IRQ controller
 	AkariOutB(0x20, 0x20);			// EOI to master IRQ controller
 
-	return Akari-&gt;Descriptor-&gt;irqt-&gt;callHandler(r-&gt;callback.int_no - 0x20, r);
+	return Akari-&gt;descriptor-&gt;irqt-&gt;callHandler(r-&gt;callback.int_no - 0x20, r);
 }
 </diff>
      <filename>interrupts.cpp</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>Task.cpp</filename>
    </removed>
    <removed>
      <filename>inc/Task.hpp</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>c7e4b2c08cec8c22648df4c388ab64cac44bd5ca</id>
    </parent>
  </parents>
  <author>
    <name>Arlen Cuss</name>
    <email>celtic@sairyx.org</email>
  </author>
  <url>http://github.com/celtic/akari/commit/6146d9e74bc067d0dbafb2e03358a248a82ef497</url>
  <id>6146d9e74bc067d0dbafb2e03358a248a82ef497</id>
  <committed-date>2009-10-09T23:48:50-07:00</committed-date>
  <authored-date>2009-10-09T23:48:50-07:00</authored-date>
  <message>Dropping the uppercase letters on the members of Akari, changing Task to Tasks so there's no conflict, and making the rest of the code match.</message>
  <tree>ac3edee8d311e5450923494a489c2404378c5187</tree>
  <committer>
    <name>Arlen Cuss</name>
    <email>celtic@sairyx.org</email>
  </committer>
</commit>
