diff --git a/src/arch/x86_64/memory/mod.rs b/src/arch/x86_64/memory/mod.rs
index e059ad9..e2a5f8f 100644
--- a/src/arch/x86_64/memory/mod.rs
+++ b/src/arch/x86_64/memory/mod.rs
@@ -7,6 +7,8 @@ mod paging;
 
 pub use self::area_frame_allocator::AreaFrameAllocator;
 
+pub use self::paging::test_paging;
+
 /// The physical size of each frame.
 pub const PAGE_SIZE: usize = 4096;
 
diff --git a/src/arch/x86_64/memory/paging/mod.rs b/src/arch/x86_64/memory/paging/mod.rs
index 682dfc1..fc926a4 100644
--- a/src/arch/x86_64/memory/paging/mod.rs
+++ b/src/arch/x86_64/memory/paging/mod.rs
@@ -190,3 +190,29 @@ impl Page {
         (self.index >> 0) & 0o777
     }
 }
+
+/// Temporary function to test paging
+pub fn test_paging<A>(allocator: &mut A) where A: FrameAllocator {
+    let mut page_table = unsafe {ActivePageTable::new()};
+
+    // test stuff
+
+    let addr = 42 * 515 * 515 * 4096;
+    let page = Page::containing_address(addr);
+    let frame = allocator.alloc_frame().expect("no more frames");
+    println!("vaddr->phys = {:?}, map to {:?}", page_table.translate(addr), frame);
+    page_table.map_to(page, frame, EntryFlags::empty(), allocator);
+    println!("vaddr->phys = {:?} (after mapping)", page_table.translate(addr));
+    println!("next frame: {:?}", allocator.alloc_frame());
+
+    println!("{:#x}", unsafe {
+        *(Page::containing_address(addr).start_address() as *const u64)
+    });
+
+    page_table.unmap(Page::containing_address(addr), allocator);
+    println!("vaddr->phys = {:?} (should be None)", page_table.translate(addr));
+
+    // println!("{:#x}", unsafe {
+    //     *(Page::containing_address(addr).start_address() as *const u64)
+    // });
+}
diff --git a/src/lib.rs b/src/lib.rs
index 252d199..fcfc4e5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -14,11 +14,11 @@ extern crate bitflags;
 extern crate x86;
 extern crate multiboot2;
 
-mod arch;
 #[macro_use]
-mod macros;
+pub mod macros;
 mod misc;
 mod logger;
+mod arch;
 
 use arch::x86_64::device::vga_console;
 use arch::x86_64::memory;
@@ -63,8 +63,8 @@ pub extern fn kernel_main(multiboot_info_pointer: usize) {
         kernel_start as usize, kernel_end as usize, multiboot_start,
         multiboot_end, memory_map_tag.memory_areas());
 
-    info!("allocated frame @ 0x{:?}", frame_allocator.alloc_frame());
-
+    memory::test_paging(&mut frame_allocator);
+    println!("-- memory paging test finished --");
 
     loop {}
 }