diff --git a/new_packet.pxd b/new_packet.pxd
index eda2794..bacec0a 100644
--- a/new_packet.pxd
+++ b/new_packet.pxd
@@ -177,8 +177,11 @@ cdef enum:
 cdef class CPacket:
     cdef nfq_q_handle *_qh
     cdef nfq_data *_nfa
-    cdef nfqnl_msg_packet_hdr *_hdr
-    cdef nfqnl_msg_packet_hw *_hw
+    # cdef nfqnl_msg_packet_hdr *_hdr
+    # cdef nfqnl_msg_packet_hw *_hw
+
+    cdef u_int32_t id
+
 
     # protocol headers
     cdef iphdr *ip_header
@@ -186,9 +189,6 @@ cdef class CPacket:
     cdef udphdr *udp_header
     cdef icmphdr *icmp_header
 
-    # cdef u_int16_t __queue_num
-    # cdef bint threaded
-
     cdef bint _verdict_is_set
     cdef u_int32_t _mark
 
diff --git a/new_packet.pyx b/new_packet.pyx
index 9ea575b..2e28b5d 100644
--- a/new_packet.pyx
+++ b/new_packet.pyx
@@ -64,11 +64,12 @@ cdef class CPacket:
 
         self._qh = qh
         self._nfa = nfa
-        self._hdr = nfq_get_msg_packet_hdr(nfa)
 
-        # self.id = ntohl(self._hdr.packet_id)
-        # self.hw_protocol = ntohs(self._hdr.hw_protocol)
-        # self.hook = self._hdr.hook
+        nfqnl_msg_packet_hdr *hdr = nfq_get_msg_packet_hdr(nfa)
+        self.id = ntohl(hdr.packet_id)
+        # NOTE: these are not needing at this moment.
+        # self.hw_protocol = ntohs(hdr.hw_protocol)
+        # self.hook = hdr.hook
 
         self.data_len = nfq_get_payload(self._nfa, &self.data)
         # TODO: figure this out. cant use no gil if its here.
@@ -118,22 +119,22 @@ cdef class CPacket:
         if self._verdict_is_set:
             raise RuntimeWarning("Verdict already given for this packet.")
 
-        cdef u_int32_t modified_payload_len = 0
-        cdef unsigned char *modified_payload = NULL
+        # cdef u_int32_t modified_payload_len = 0
+        # cdef unsigned char *modified_payload = NULL
 
         # rewriting payload data/len
-        if self._given_payload:
-            modified_payload_len = len(self._given_payload)
-            modified_payload = self._given_payload
+        # if self._given_payload:
+        #     modified_payload_len = len(self._given_payload)
+        #     modified_payload = self._given_payload
 
         if self._modified_mark:
             nfq_set_verdict2(
-                self._qh, self.id, verdict, self._modified_mark, modified_payload_len, modified_payload
+                self._qh, self.id, verdict, self._modified_mark, self.data_len, self.data
             )
 
         else:
             nfq_set_verdict(
-                self._qh, self.id, verdict, modified_payload_len, modified_payload
+                self._qh, self.id, verdict, self.data_len, self.data
             )
 
         self._verdict_is_set = True
@@ -162,6 +163,9 @@ cdef class CPacket:
 
         return ip_header
 
+    def get_proto_header(self):
+        '''return layer4 of packet data as a tuple converted directly from C struct.'''
+
     # def _before_exit(self):
     #     '''executes before returning from parse call.
     #     May be overridden.