diff --git a/src/descriptor.rs b/src/descriptor.rs
index 6f370ec..bf10380 100644
--- a/src/descriptor.rs
+++ b/src/descriptor.rs
@@ -11,6 +11,8 @@
 use crate::kernel_space::KernelSpace;
 use crate::MemoryAttributesIndex;
 
+use super::address::PhysicalAddress;
+
 /// Memory shareability
 #[derive(PrimitiveEnum_u8, Clone, Copy, Debug, PartialEq, Eq, Default)]
 pub enum Shareability {
@@ -151,27 +153,27 @@
     pub fn set_block_descriptor(
         &mut self,
         level: usize,
-        output_address: usize,
+        output_address: PhysicalAddress,
         attributes: Attributes,
     ) {
         let attr: u64 = attributes.into();
 
         assert!(level <= 3);
         assert!(self.get_descriptor_type(level) != DescriptorType::Table);
-        assert_eq!(0, output_address & !Self::get_oa_mask(level));
+        assert_eq!(0, output_address.0 & !Self::get_oa_mask(level));
         assert_eq!(0, attr & !Self::ATTR_MASK);
 
         let table_bit = if level < 3 { 0 } else { Self::TABLE_BIT };
 
-        self.set(Self::VALID_BIT | table_bit | output_address as u64 | attr);
+        self.set(Self::VALID_BIT | table_bit | output_address.0 as u64 | attr);
     }
 
     /// Get output address from the block descriptor
-    pub fn get_block_output_address(&self, level: usize) -> usize {
+    pub fn get_block_output_address(&self, level: usize) -> PhysicalAddress {
         assert!(level <= 3);
         assert_eq!(DescriptorType::Block, self.get_descriptor_type(level));
 
-        (self.get() & Self::OA_MASK) as usize
+        PhysicalAddress((self.get() & Self::OA_MASK) as usize)
     }
 
     /// Set the attributes of the block descriptor
@@ -461,7 +463,7 @@
             cell: UnsafeCell::new(1),
         };
 
-        descriptor.set_block_descriptor(1, 0, Attributes::default());
+        descriptor.set_block_descriptor(1, PhysicalAddress(0), Attributes::default());
         assert_eq!(0x1, descriptor.get());
     }
 
@@ -472,7 +474,7 @@
             cell: UnsafeCell::new(0),
         };
 
-        descriptor.set_block_descriptor(1, 1 << 63, Attributes::default());
+        descriptor.set_block_descriptor(1, PhysicalAddress(1 << 63), Attributes::default());
     }
 
     #[test]
@@ -483,7 +485,7 @@
 
         descriptor.set_block_descriptor(
             1,
-            0x0000000f_c0000000,
+            PhysicalAddress(0x0000000f_c0000000),
             Attributes {
                 uxn: true,
                 ..Default::default()
@@ -497,7 +499,7 @@
 
         descriptor.set_block_descriptor(
             3,
-            0x0000000f_fffff000,
+            PhysicalAddress(0x0000000f_fffff000),
             Attributes {
                 uxn: true,
                 ..Default::default()
@@ -505,7 +507,10 @@
         );
         assert_eq!(0x0040000f_fffff003, descriptor.get());
 
-        assert_eq!(0x0000000f_fffff000, descriptor.get_block_output_address(3));
+        assert_eq!(
+            PhysicalAddress(0x0000000f_fffff000),
+            descriptor.get_block_output_address(3)
+        );
         assert_eq!(
             Attributes {
                 uxn: true,
