     // Minimum interval before a matrix, that has already been sent, can be send again. This improves user experience when a lot of matrices are sent with a high rate.
     private let minSameMatrixResendInterval: NSTimeInterval = 0.2
 
-    init(peripheral: CBPeripheral, matrixCharacteristic: CBCharacteristic, brightness: Float, firmwareVersion: Double) {
+    init(peripheral: CBPeripheral, matrixCharacteristic: CBCharacteristic, brightness: Float) {
         self.peripheral = peripheral
         self.matrixCharacteristic = matrixCharacteristic
         self.brightness = brightness
-        self.firmwareVersion = firmwareVersion
-    }
-
-    //TODO: Move matrix write handling into a private class
+    }
+
     func writeMatrix(matrix: NuimoLEDMatrix, interval: NSTimeInterval) {
         currentMatrix = matrix
         currentMatrixDisplayInterval = interval

    public var batteryLevel: Int = -1 { didSet { if self.batteryLevel != oldValue { delegate?.nuimoController?(self, didUpdateBatteryLevel: self.batteryLevel) } } }
    public var defaultMatrixDisplayInterval: NSTimeInterval = 2.0
    public var matrixBrightness: Float = 1.0 { didSet { matrixWriter?.brightness = self.matrixBrightness } }
    public var firmwareVersion = 0.1 { didSet { matrixWriter?.firmwareVersion = self.firmwareVersion } }
    
    public override var serviceUUIDs: [CBUUID] { get { return nuimoServiceUUIDs } }
    public override var charactericUUIDsForServiceUUID: [CBUUID : [CBUUID]] { get { return nuimoCharactericUUIDsForServiceUUID } }

            case kBatteryCharacteristicUUID:
                peripheral.readValueForCharacteristic(characteristic)
            case kLEDMatrixCharacteristicUUID:
                matrixWriter = LEDMatrixWriter(peripheral: peripheral, matrixCharacteristic: characteristic, brightness: matrixBrightness)
                delegate?.nuimoControllerDidConnect?(self)
            default:
                break
