 	public init(commonFormat format: CommonPCMFormat, sampleRate: Float64, channelsPerFrame: UInt32, isInterleaved interleaved: Bool) {
 		switch format {
 		case .float32:
-			self = asbdForLPCM(sampleRate: sampleRate, channelsPerFrame: channelsPerFrame, validBitsPerChannel: 32, totalBitsPerChannel: 32, isFloat: true, isBigEndian: kAudioFormatFlagIsBigEndian == kAudioFormatFlagsNativeEndian, isNonInterleaved: !interleaved)
+			self = makeASBDForLinearPCM(sampleRate: sampleRate, channelsPerFrame: channelsPerFrame, validBitsPerChannel: 32, totalBitsPerChannel: 32, isFloat: true, isBigEndian: kAudioFormatFlagIsBigEndian == kAudioFormatFlagsNativeEndian, isNonInterleaved: !interleaved)
 		case .float64:
-			self = asbdForLPCM(sampleRate: sampleRate, channelsPerFrame: channelsPerFrame, validBitsPerChannel: 64, totalBitsPerChannel: 64, isFloat: true, isBigEndian: kAudioFormatFlagIsBigEndian == kAudioFormatFlagsNativeEndian, isNonInterleaved: !interleaved)
+			self = makeASBDForLinearPCM(sampleRate: sampleRate, channelsPerFrame: channelsPerFrame, validBitsPerChannel: 64, totalBitsPerChannel: 64, isFloat: true, isBigEndian: kAudioFormatFlagIsBigEndian == kAudioFormatFlagsNativeEndian, isNonInterleaved: !interleaved)
 		case .int16:
-			self = asbdForLPCM(sampleRate: sampleRate, channelsPerFrame: channelsPerFrame, validBitsPerChannel: 16, totalBitsPerChannel: 16, isFloat: false, isBigEndian: kAudioFormatFlagIsBigEndian == kAudioFormatFlagsNativeEndian, isNonInterleaved: !interleaved)
+			self = makeASBDForLinearPCM(sampleRate: sampleRate, channelsPerFrame: channelsPerFrame, validBitsPerChannel: 16, totalBitsPerChannel: 16, isFloat: false, isBigEndian: kAudioFormatFlagIsBigEndian == kAudioFormatFlagsNativeEndian, isNonInterleaved: !interleaved)
 		case .int32:
-			self = asbdForLPCM(sampleRate: sampleRate, channelsPerFrame: channelsPerFrame, validBitsPerChannel: 32, totalBitsPerChannel: 32, isFloat: false, isBigEndian: kAudioFormatFlagIsBigEndian == kAudioFormatFlagsNativeEndian, isNonInterleaved: !interleaved)
-		}
-	}
-
-	/// Returns `true` if `self` represents non-interleaved data
+			self = makeASBDForLinearPCM(sampleRate: sampleRate, channelsPerFrame: channelsPerFrame, validBitsPerChannel: 32, totalBitsPerChannel: 32, isFloat: false, isBigEndian: kAudioFormatFlagIsBigEndian == kAudioFormatFlagsNativeEndian, isNonInterleaved: !interleaved)
+		}
+	}
+
+	// MARK: Format Information
+
+	/// Returns `true` if this format is non-interleaved
 	public var isNonInterleaved: Bool {
 		return mFormatFlags & kAudioFormatFlagIsNonInterleaved == kAudioFormatFlagIsNonInterleaved
 	}
 
-	/// Returns `true` if `self` represents interleaved data
+	/// Returns `true` if this format is interleaved
 	public var isInterleaved: Bool {
-		return !isNonInterleaved
+		return mFormatFlags & kAudioFormatFlagIsNonInterleaved == 0
 	}
 
 	/// Returns the number of interleaved channels

import CoreAudio

extension AudioStreamBasicDescription {
	/// Common PCM formats
	public enum CommonPCMFormat {
		/// Native endian 32-bit floating point samples

		}
		else if mFormatID == kAudioFormatAppleLossless {
			var sourceBitDepth: UInt32 = 0;
			switch mFormatFlags {
			case kAppleLosslessFormatFlag_16BitSourceData:		sourceBitDepth = 16
			case kAppleLosslessFormatFlag_20BitSourceData:		sourceBitDepth = 20
			case kAppleLosslessFormatFlag_24BitSourceData:		sourceBitDepth = 24
