 
         var msgs = [OSCMessage]()
 
-        /** var ix = data.index(data.startIndex, offsetBy: 16)
-
-        while ix < data.endIndex {
+        // Read up the content
+        // from offset
+        var ix = 16
+        while ix < bytes.count {
             guard
-                let chunk_len = Int(data: data[ix ..< data.index(ix, offsetBy: 4)]),
-                ix+4+chunk_len < data.endIndex,
-                let msg = OSCMessage(data: data[(ix+4)..<(ix+chunk_len+4)])
+                let chunk_len = Int(data: bytes[ix..<(ix+4)]),
+                ix+4+chunk_len < bytes.count
             else {
                 break
             }
 
-            msgs += msg
-        } **/
-
-        self.messages = msgs
-    }
-}
-
-
+            /// FIXME
+            let msg = OSCMessage(data: [Byte]( bytes[(ix+4)..<(ix+chunk_len+4)] ))
+            
+            msgs.append(msg)
+
+            /// step to the start of the next chunk
+            ix = ix+4+chunk_len
+        }
+
+        self.content = msgs
+    }
+}

        }
        let bytes = [Byte](data)

        guard
            let marker = String(data: bytes.prefix(upTo: 8)), 
            marker == "#bundle"
        else {
            return nil
        }

        // extarct time tag
        guard
            let ts = OSCTimeTag(data: bytes[bytes.startIndex+8..<bytes.startIndex+16])
        else {

        return result
    }

    public init(timetag: OSCTimeTag, content: [OSCMessage]) {
        self.timetag = timetag
        self.content = content
    }

    public init?<S : Collection>(data: S) where S.Iterator.Element == Byte, S.SubSequence.Iterator.Element == S.Iterator.Element {
        /// Chechk the header
        guard
            data.count >= 16
        else {
