         }
         let bytes = [Byte](data)
 
-        guard
-            let marker = String(data: bytes.prefix(upTo: 8)), 
+        /// Bundle starts with string
+        guard
+            let marker = String(data: bytes.prefix(8)), 
             marker == "#bundle"
         else {
             return nil
         }
 
-        // extarct time tag
+        /// Extract time tag
         guard
             let ts = OSCTimeTag(data: bytes[bytes.startIndex+8..<bytes.startIndex+16])
         else {


public struct OSCBundle : OSCConvertible {
    public let timetag : OSCTimeTag
    public let messages : [OSCMessage]


    public var oscValue : [Byte] {
        var result = [Byte]()
        result += "#bundle".oscValue
        result += timetag.oscValue

        messages.forEach { msg in
            let v = msg.data
            result += Int32(v.count).oscValue
            result += v

        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 {
