diff --git a/system/init/main.zig b/system/init/main.zig
index 1b519e0..f813e78 100644
--- a/system/init/main.zig
+++ b/system/init/main.zig
@@ -7,14 +7,12 @@ const buffer = system.ring_buffer;
 // FIXME: Make arch-specific.
 const PAGE_SIZE = 4096;
 
-const SELF_PID = 1;
-
 fn setupKernelRingBuffer(base: u64) !buffer.RingBuffer {
     const phys = vm.PhysFrame{ .address = try syscalls.allocFrame() };
 
     const data: [*]u8 = @ptrCast(phys.virtualPointer(u8, base));
 
-    try syscalls.setEventQueue(SELF_PID, phys.address);
+    try syscalls.setEventQueue(syscalls.getThreadId(), phys.address);
 
     return buffer.RingBuffer.init(data, PAGE_SIZE, true);
 }
@@ -23,9 +21,8 @@ fn setTokens() void {
     var tokens: u64 = 0;
     tokens |= @intFromEnum(system.kernel.Token.Root);
     tokens |= @intFromEnum(system.kernel.Token.PhysicalMemory);
-    tokens |= @intFromEnum(system.kernel.Token.EventQueue);
-    tokens |= @intFromEnum(system.kernel.Token.VirtualMemory);
-    syscalls.setTokens(SELF_PID, tokens) catch {};
+    tokens |= @intFromEnum(system.kernel.Token.CreateProcess);
+    syscalls.setTokens(syscalls.getThreadId(), tokens) catch {};
 }
 
 export fn _start(base: u64, address: u64) callconv(.C) noreturn {