     
     public init?(data: Data) {
         
-        guard data.count >= type(of: self).minLength
+        guard data.count >= type(of: self).minimumLength
             else { return nil }
         
         let companyIdentifier = CompanyIdentifier(rawValue: UInt16(littleEndian: UInt16(bytes: (data[0], data[1]))))
-        var additionalData = [UInt8]()
-        
-        data.enumerated().forEach { (index, element) in
-            if index >= GAPManufacturerSpecificData.minLength {
-                additionalData.append(element)
-            }
+        
+        var additionalData = Data()
+        
+        if data.count > type(of: self).minimumLength {
+            
+            additionalData = Data(data.suffix(from: 2))
+            
+        } else {
+            
+            additionalData = Data()
         }
         
         self.init(companyIdentifier: companyIdentifier, additionalData: additionalData)

    
    public let uriHash: UInt32?
    
    public init(beaconType: GAPBeaconType, deviceUUID: UUID, oobInformationFlags: BitMaskOptionSet<GAPOOBInformationFlag>, uriHash: UInt32? = nil) {
        
        self.beaconType = beaconType
        self.deviceUUID = deviceUUID

            guard let beacon = GAPUnprovisionedDeviceBeacon(data: reducedData)
                else { return nil }
            
            self = .unprovisionedDevice(beacon)
            
        case .secureNetwork:
            
            guard let beacon = GAPSecureNetworkBeacon(data: reducedData)
                else { return nil }
            
            self = .secureNetwork(beacon)
            
        }
    }
    
    public var data: Data {
        
        switch self {
            
        case .unprovisionedDevice(let beacon):
            
