     var _buffer: Buffer
     
     /// Creates a new packet
-    init(payload: ByteBuffer) {
+    init(payload: ByteBuffer, containsPacketSize: Bool = false) {
         self._buffer = .immutable(payload)
+        self.containsPacketSize = containsPacketSize
     }
     
     /// Creates a new packet
-    init(payload: MutableByteBuffer) {
+    init(payload: MutableByteBuffer, containsPacketSize: Bool = false) {
         self._buffer = .mutable(payload)
+        self.containsPacketSize = containsPacketSize
     }
     
     deinit {

            _ = memcpy(pointer.advanced(by: 4), buffer.baseAddress!, data.count)
        }
        
        self.init(payload: ByteBuffer(start: pointer, count: 4 &+ data.count))
    }
}

            UInt8((elements.count >> 8) & 0xff),
            UInt8((elements.count >> 16) & 0xff),
        ]
        
        memcpy(pointer, packetSizeBytes, 3)
        
        memcpy(pointer.advanced(by: 4), elements, elements.count)
        
        self.init(payload: ByteBuffer(start: pointer, count: 4 &+ elements.count), containsPacketSize: true)
    }
    
    convenience init(data: Data) {
