  */
 public struct GATTAerobicHeartRateLowerLimit: GATTProfileCharacteristic {
     
+    public typealias BeatsPerMinute = GATTBeatsPerMinute.Byte
+    
     internal static let length = MemoryLayout<UInt8>.size
     
     public static var uuid: BluetoothUUID { return .aerobicHeartRateLowerLimit }

    public var data: Data {
        
        return Data([beats.rawValue])
    }
    
    public struct BeatsPerMinute: BluetoothUnit {
        
        internal static let length = MemoryLayout<UInt8>.size
        
        public static var unitType: UnitIdentifier { return .beatsPerMinute }
        
        public var rawValue: UInt8
        
        public init(rawValue value: UInt8) {
            
            self.rawValue = value
        }
        
        fileprivate init(unsafe value: UInt8) {
            
            self.rawValue = value
        }
        
    }
}

extension GATTAerobicHeartRateLowerLimit.BeatsPerMinute: CustomStringConvertible {
    
    public var description: String {
        
        return rawValue.description
    }
    
}

extension GATTAerobicHeartRateLowerLimit.BeatsPerMinute: Equatable {
    
    public static func == (lhs: GATTAerobicHeartRateLowerLimit.BeatsPerMinute,
                           rhs: GATTAerobicHeartRateLowerLimit.BeatsPerMinute) -> Bool {
        
        return lhs.rawValue == rhs.rawValue
    }
    
}

extension GATTAerobicHeartRateLowerLimit.BeatsPerMinute: ExpressibleByIntegerLiteral {
    
    public init(integerLiteral value: UInt8) {
        
        self.init(unsafe: value)
    }
    
}

    }
}

// MARK: - Reusable

public enum GATTBeatsPerMinute {
    
    public struct Byte: BluetoothUnit {
        
        internal static let length = MemoryLayout<UInt8>.size
        
        public static var unitType: UnitIdentifier { return .beatsPerMinute }
        
        public var rawValue: UInt8
        
        public init(rawValue value: UInt8) {
            
            self.rawValue = value
        }
        
        fileprivate init(unsafe value: UInt8) {
            
            self.rawValue = value
        }
        
    }
}

extension GATTBeatsPerMinute.Byte: CustomStringConvertible {
    
    public var description: String {
        
        return rawValue.description
    }
    
}

extension GATTBeatsPerMinute.Byte: Equatable {
    
    public static func == (lhs: GATTBeatsPerMinute.Byte,
                           rhs: GATTBeatsPerMinute.Byte) -> Bool {
        
        return lhs.rawValue == rhs.rawValue
    }
    
}

extension GATTBeatsPerMinute.Byte: ExpressibleByIntegerLiteral {
    
    public init(integerLiteral value: UInt8) {
        
        self.init(unsafe: value)
    }
    
}

// MARK: - Internal

internal extension UInt64 {
