diff --git a/hdl/src/wrapper_packet_deconstruct.sv b/hdl/src/wrapper_packet_deconstruct.sv
index cb3656d34147c7d9720953202a739913e7715c38..bd1e759faa49d69d22546ea0e405aa75e6cca834 100644
--- a/hdl/src/wrapper_packet_deconstruct.sv
+++ b/hdl/src/wrapper_packet_deconstruct.sv
@@ -16,21 +16,36 @@ module  wrapper_packet_deconstruct #(
   input  logic                  hclk,       // clock
   input  logic                  hresetn,    // reset
 
-   //Register interface
-  input  logic [ADDRWIDTH-1:0]   addr,
-  input  logic                   read_en,
-  input  logic                   write_en,
-  input  logic [3:0]             byte_strobe,
-  input  logic [31:0]            wdata,
-  output logic [31:0]            rdata,
-  output logic                   wready,
-  output logic                   rready,
+  // AHB Register interface
+  input  logic [ADDRWIDTH-1:0]   ahb_addr,
+  input  logic                   ahb_read_en,
+  input  logic                   ahb_write_en,
+  input  logic [3:0]             ahb_byte_strobe,
+  input  logic [31:0]            ahb_wdata,
+  output logic [31:0]            ahb_rdata,
+  output logic                   ahb_wready,
+  output logic                   ahb_rready,
+
+  // APB Register Interface (IRQ Registers)
+  input  logic [ADDRWIDTH-1:0]   apb_addr,
+  input  logic                   apb_read_en,
+  input  logic                   apb_write_en,
+  input  logic [3:0]             apb_byte_strobe,
+  input  logic [31:0]            apb_wdata,
+  output logic [31:0]            apb_rdata,
+  output logic                   apb_wready,
+  output logic                   apb_rready,
 
   // Valid/Ready interface
   input  logic [PACKETWIDTH-1:0] packet_data,
   input  logic                   packet_data_last,
   input  logic                   packet_data_valid,
-  output logic                   packet_data_ready
+  output logic                   packet_data_ready,
+  input  logic                   packet_count,
+
+  // IRQ Control
+  input  logic                   irq_ack,
+  output logic                   irq_out
 );
 
 // Create Deconstruction Buffer
@@ -42,12 +57,14 @@ logic [(PACKETWIDTH/32)-1:0] deconst_buf_flag;
 
 // Select which word in buffer to read 
 logic [$clog2(PACKETWIDTH/32)-1:0] buf_word_sel;
-assign buf_word_sel = addr[($clog2(PACKETWIDTH/32)-1)+2:2];
+assign buf_word_sel = ahb_addr[($clog2(PACKETWIDTH/32)-1)+2:2];
 
 // Curent Buffer Flag
 logic [(PACKETWIDTH/32)-1:0] cur_deconst_buf_flag;
 assign cur_deconst_buf_flag = 1'b1 << buf_word_sel;
 
+// Register to Hold Last Flag
+logic deconst_buf_last;
 // Check All Flags are High
 logic deconst_buf_flag_reduced;
 assign deconst_buf_flag_reduced = &(deconst_buf_flag | (cur_deconst_buf_flag));
@@ -60,13 +77,14 @@ logic deconst_buf_valid;
 always_ff @(posedge hclk or negedge hresetn) begin
     if (~hresetn) begin
         // Reset Construction Buffer
-        deconst_buf   <= {PACKETWIDTH{1'b0}};
+        deconst_buf          <= {PACKETWIDTH{1'b0}};
         // Reset Values
-        packet_data_ready  <= 1'b0;
-        deconst_buf_valid  <= 1'b0;
-        deconst_buf_flag   <= {(PACKETWIDTH/32){1'b0}};
+        packet_data_ready    <= 1'b0;
+        deconst_buf_valid    <= 1'b0;
+        deconst_buf_flag     <= {(PACKETWIDTH/32){1'b0}};
+        deconst_buf_last     <= 1'b1;
     end else begin
-        // If ready is low and theres no valid data in buffer, asser ready
+        // If ready is low and theres no valid data in buffer, assert ready
         if (!packet_data_ready && !deconst_buf_valid) begin
             packet_data_ready  <= 1'b1;
         end
@@ -75,9 +93,19 @@ always_ff @(posedge hclk or negedge hresetn) begin
             packet_data_ready  <= 1'b0;
             deconst_buf        <= packet_data;
             deconst_buf_valid  <= 1'b1;
+            deconst_buf_last   <= packet_data_last;
             deconst_buf_flag   <= {(PACKETWIDTH/32){1'b0}};
+
+            // If First Packet of Block
+            if (deconst_buf_last) begin
+                // Read in Number of Packets
+
+                // Calculate Start Address
+
+                // Write Start Address to Register
+            end
         end
-        if (read_en) begin
+        if (ahb_read_en) begin
             // Register which words in the Deconstruction buffer have been read
             // Check if All Words have been Read
             if (deconst_buf_flag_reduced && !(packet_data_valid && packet_data_ready)) begin
@@ -93,20 +121,20 @@ end
 
 // Read Condition
 always_comb begin
-    if (read_en) begin
+    if (ahb_read_en) begin
         // Read appropriate 32 bits from buffer - wrapping behaviour
-        rdata = deconst_buf[buf_word_sel];
+        ahb_rdata = deconst_buf[buf_word_sel];
     end else begin
-        rdata = 32'd0;
+        ahb_rdata = 32'd0;
     end
 end
 
 // Register Ready Control
 always_comb begin
     // Not Ready Out when waiting for Valid Data on Input
-    rready = ~packet_data_ready;
+    ahb_rready = ~packet_data_ready;
     // Write Ready always high but doesn't do anywthing
-    wready = 1'b1;
+    ahb_wready = 1'b1;
 end
 
 endmodule
\ No newline at end of file