         public func encode() -> Encodable.Properties {
             return ["id": id.encode()]
         }
-    }
-
-    public struct ServiceSubscription : Encodable {
+
+        public var description : String {
+            return "<characteristic: \(id)>"
+        }
+    }
+
+    public struct ServiceSubscription : Encodable, CustomStringConvertible {
         public let id: Identifier
         public let characteristics: [CharacteristicSubscription] // If empty then all of the service's characteristics and descriptors will be discovered
         

        func getCharacteristicUuids() -> [CBUUID]? {
            return characteristics.isEmpty ? nil : characteristics.map() { $0.id.uuid }
        }
    }

    // TODO: Make the subscription CustomStringConvertible
    public struct PeripheralSubscription : Encodable {
        public let name: String
        public let services: [ServiceSubscription] // If empty then all of the peripheral's services, characteristics and descriptors will be discovered
        public let autoConnect: Bool


extension CentralManager {

    public struct Identifier : Encodable, CustomStringConvertible  {
        public let uuid: CBUUID
        public let name: String?
        
