 			flags = Flags(rawValue: rawValue[7])
 		}
 
-		init(compression: CompressionAlgorithm? = nil, hasCRC: Bool = false) {
+		init(compression: CompressionAlgorithm = .none, hasCRC: Bool = false) {
 			self.version = 1
 			self.flags = Flags(compression: compression, hasCRC: hasCRC)
 		}
 
-		var debugDescription: String { "has CRC: \(hasCRC); compression: \(compression != nil ? String(describing: compression!) : "none")" }
+		var debugDescription: String { "has CRC: \(hasCRC); compression: \(String(describing: compression))" }
 	}
 
 	private static func parseHeader(from data: Data) throws -> Header? {

		let version: UInt8
		private var flags: Flags
		var hasCRC: Bool { flags.hasCRC }
		var compression: CompressionAlgorithm? { flags.compression }
		var dataOffset: Int { 8 + (flags.hasCRC ? 4 : 0) }

		init?<T: DataProtocol>(rawValue: T) where T.Index == Int {

				hasCRC = rawValue & hasCRCMask != 0
				let compressionBits = rawValue & compressionMask

				compression = CompressionAlgorithm(rawValue: compressionBits) ?? .none
			}

			init(compression: CompressionAlgorithm = .none, hasCRC: Bool = false) {
				self.compression = compression
				self.hasCRC = hasCRC
			}
