      
         - Parameter deviceID: An audio device identifier that is valid and present in the system.
      */
-    private init(deviceID: AudioObjectID) {
+    private init?(deviceID: AudioObjectID) {
         super.init(objectID: deviceID)
+
+        if isAlive() == false {
+            return nil
+        }
+
         cachedDeviceName = getDeviceName()
         registerForNotifications()
         AMAudioObjectPool.instancePool.setObject(self, forKey: UInt(objectID))

        let status = getPropertyDataArray(address, value: &relatedDevices, andDefaultValue: AudioDeviceID())

        if noErr == status {
            return relatedDevices.map({ (deviceID) -> AMAudioDevice in
                return AMAudioDevice.lookupByID(deviceID)
            })
        }

        return nil

        }

        if let preferredStereoChannels = preferredStereoChannelsForDirection(direction) {
            let muteCount = preferredStereoChannels.filter { channel -> Bool in
                canMuteForChannel(channel, andDirection: direction) == true
            }.count

            return muteCount == preferredStereoChannels.count
