         }
 
         func defaultValue(_ characteristic: CharacteristicInfo) -> String {
-            if characteristic.isReadable {
+            if characteristic.permissions.contains(.read) {
                 if enumeratedCharacteristics.contains(characteristic.hkname) {
                     guard let defaultCase = defaultEnumCase[characteristic.hkname] else {
                         preconditionFailure("No default enum case for enum \(characteristic.hkname)")

            try writeToFile(atPath: "Characteristics/Characteristic.\(name.uppercasedFirstLetter()).swift") { write in
                func writeFactoryArgumentsWithDefaults() {
                    write("        _ value: \(valueType(characteristic)) = \(defaultValue(characteristic)),")
                    write("        permissions: [CharacteristicPermission] = \(characteristic.permissions.arrayLiteral),")
                    write("        description: String? = \"\(characteristic.title)\",")
                    write("        format: CharacteristicFormat? = .\(characteristic.format),")
                    write("        unit: CharacteristicUnit? = \(characteristic.units != nil ? ".\(unitName(characteristic.units!))" : "nil"),")

            let format: String
            let maxValue: NSNumber?
            let minValue: NSNumber?
            let permissions: CharacteristicInfoPermission
            let stepValue: NSNumber?
            let units: String?
        }

        var characteristicInfo = [CharacteristicInfo]()
