diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0eac290..2cf79fd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.0.1
+
+- Use extension type to represent `MaybeTarFormat` and `TarFormat`.
+- Update to version `6.0.0` of `package:lints`.
+
 ## 2.0.0
 
 - Require the `mode` parameter when creating `TarHeader`s. Previously the field
diff --git a/lib/src/format.dart b/lib/src/format.dart
index b584f5c..273db1d 100644
--- a/lib/src/format.dart
+++ b/lib/src/format.dart
@@ -1,38 +1,23 @@
 /// Holds the possible TAR formats that a file could take.
 ///
-/// This library supports the V7, USTAR, PAX, GNU, and STAR formats. The
-/// [MaybeTarFormat] class generally describes any combination of those formats
+/// This package supports the V7, USTAR, PAX, GNU, and STAR formats. The
+/// [TarFormat] class generally describes any combination of those formats
 /// and represents that we don't know the exact format yet. As soon as we do
 /// know, the [TarFormat] enum represents the exact format of a header.
-sealed class MaybeTarFormat {
-  /// The TAR formats are encoded in powers of two in [_value], such that we
-  /// can refine our guess via bit operations as we discover more information
-  /// about the TAR file.
-  /// A value of 0 means that the format is invalid.
-  int get _value;
-
-  factory MaybeTarFormat._(int value) {
-    return switch (value) {
-      1 => TarFormat.v7,
-      2 => TarFormat.ustar,
-      4 => TarFormat.pax,
-      8 => TarFormat.gnu,
-      16 => TarFormat.star,
-      final other => _MaybeTarFormat(other),
-    };
-  }
-
-  /// Returns a new [MaybeTarFormat] that signifies that it can be either
-  /// `this` or [other]'s format.
+extension type const MaybeTarFormat._(int _representation) {
+  /// Returns a new [TarFormat] that signifies that it can be either `this` or
+  /// or [other]'s format.
   ///
   /// **Example:**
   /// ```dart
-  /// TarFormat format = TarFormat.ustar | TarFormat.pax;
+  /// MaybeTarFormat format = TarFormat.ustar | TarFormat.pax;
   /// ```
   ///
   /// The above code would signify that we have limited `format` to either
   /// the USTAR or PAX format, but need further information to refine the guess.
-  MaybeTarFormat operator |(TarFormat other);
+  MaybeTarFormat operator |(TarFormat other) {
+    return MaybeTarFormat._(_representation | other._representation);
+  }
 
   /// Returns if [other] is a possible resolution of `this`.
   ///
@@ -40,7 +25,13 @@
   /// enough information to determine if it is [TarFormat.ustar] or
   /// [TarFormat.pax], so either of them could be possible resolutions of
   /// `this`.
-  bool has(MaybeTarFormat other);
+  bool has(MaybeTarFormat other) {
+    if (isKnownFormat) {
+      return this == other;
+    } else {
+      return mayOnlyBe(other).valid;
+    }
+  }
 
   /// Returns a new [TarFormat] that signifies that it can only be [other]'s
   /// format.
@@ -57,20 +48,51 @@
   ///
   /// If `has(other) == false`, [mayOnlyBe] will result in an unknown
   /// [TarFormat].
-  MaybeTarFormat mayOnlyBe(MaybeTarFormat other);
+  MaybeTarFormat mayOnlyBe(MaybeTarFormat other) {
+    return MaybeTarFormat._(_representation & other._representation);
+  }
 
   /// Returns if this format might be valid.
   ///
   /// This returns true as well even if we have yet to fully determine what the
   /// format is.
-  bool get valid;
+  bool get valid => _representation != 0;
+
+  /// Whether this represents a single known format (as a value listed in
+  /// [TarFormat]).
+  bool get isKnownFormat =>
+      valid && _representation == 1 << (_representation.bitLength - 1);
+
+  String get description {
+    if (!valid) {
+      return 'Invalid';
+    }
+
+    final buffer = StringBuffer();
+
+    var repr = _representation;
+    for (final name in TarFormat._names) {
+      if (repr.isOdd) {
+        if (buffer.isNotEmpty) buffer.write(' or ');
+        buffer.write(name);
+      }
+
+      repr >>>= 1;
+    }
+
+    return buffer.toString();
+  }
 }
 
 /// A fully resolved tar format.
 ///
-/// When we know that a tar entry must use a specific format, this is represented
-/// with a value from this [TarFormat] enum.
-enum TarFormat implements MaybeTarFormat {
+/// When we know that a tar entry must use a specific format, this is
+/// represented with a value from this [TarFormat].
+extension type const TarFormat._(MaybeTarFormat _inner)
+    implements MaybeTarFormat {
+  // Names of known formats in order of their bit representation.
+  static const _names = ['V7', 'USTAR', 'PAX', 'GNU', 'STAR'];
+
   /// Original Unix Version 7 (V7) AT&T tar tool prior to standardization.
   ///
   /// The structure of the V7 Header consists of the following:
@@ -95,7 +117,7 @@
   /// https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&format=html
   /// https://www.gnu.org/software/tar/manual/html_chapter/tar_15.html#SEC188
   /// http://cdrtools.sourceforge.net/private/man/star/star.4.html
-  v7(1, 'V7'),
+  static const v7 = TarFormat._(MaybeTarFormat._(1));
 
   /// USTAR (Unix Standard TAR) header format defined in POSIX.1-1988.
   ///
@@ -141,7 +163,7 @@
   /// https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&format=html
   /// https://www.gnu.org/software/tar/manual/html_chapter/tar_15.html#SEC188
   ///	http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_06
-  ustar(2, 'USTAR'),
+  static const ustar = TarFormat._(MaybeTarFormat._(2));
 
   /// PAX header format defined in POSIX.1-2001.
   ///
@@ -159,7 +181,7 @@
   /// https://www.gnu.org/software/tar/manual/html_chapter/tar_15.html#SEC188
   /// http://cdrtools.sourceforge.net/private/man/star/star.4.html
   ///	http://pubs.opengroup.org/onlinepubs/009695399/utilities/pax.html
-  pax(4, 'PAX'),
+  static const pax = TarFormat._(MaybeTarFormat._(4));
 
   /// GNU header format.
   ///
@@ -209,7 +231,7 @@
   ///
   /// Reference:
   ///	https://www.gnu.org/software/tar/manual/html_node/Standard.html
-  gnu(8, 'GNU'),
+  static const gnu = TarFormat._(MaybeTarFormat._(8));
 
   /// Schily's TAR format, which is incompatible with USTAR.
   /// This does not cover STAR extensions to the PAX format; these fall under
@@ -247,76 +269,5 @@
   ///
   /// Reference:
   /// http://cdrtools.sourceforge.net/private/man/star/star.4.html
-  star(16, 'STAR'),
-  ;
-
-  @override
-  final int _value;
-
-  final String _name;
-
-  const TarFormat(this._value, this._name);
-
-  @override
-  bool get valid => true;
-
-  @override
-  MaybeTarFormat operator |(TarFormat other) {
-    return other == this ? this : _MaybeTarFormat(_value | other._value);
-  }
-
-  @override
-  bool has(MaybeTarFormat other) {
-    return other == this;
-  }
-
-  @override
-  MaybeTarFormat mayOnlyBe(MaybeTarFormat other) {
-    return MaybeTarFormat._(_value & other._value);
-  }
-
-  @override
-  String toString() => _name;
-}
-
-final class _MaybeTarFormat implements MaybeTarFormat {
-  // Note: We never represent a single tar format in a _MaybeTarFormat, these
-  // are represented in the TarFormat enum.
-  @override
-  final int _value;
-
-  const _MaybeTarFormat(this._value);
-
-  @override
-  int get hashCode => _value;
-
-  @override
-  bool operator ==(Object other) {
-    if (other is! TarFormat) return false;
-
-    return _value == other._value;
-  }
-
-  @override
-  String toString() {
-    if (!valid) return 'Invalid';
-
-    return TarFormat.values.where(has).map((e) => e._name).join(' or ');
-  }
-
-  @override
-  bool has(MaybeTarFormat other) => _value & other._value != 0;
-
-  @override
-  bool get valid => _value != 0;
-
-  @override
-  MaybeTarFormat mayOnlyBe(MaybeTarFormat other) {
-    return MaybeTarFormat._(_value & other._value);
-  }
-
-  @override
-  MaybeTarFormat operator |(TarFormat other) {
-    return MaybeTarFormat._(_value | other._value);
-  }
+  static const star = TarFormat._(MaybeTarFormat._(16));
 }
diff --git a/pubspec.yaml b/pubspec.yaml
index 54bbf5d..64ca872 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,6 +1,6 @@
 name: tar
 description: Memory-efficient, streaming implementation of the tar file format
-version: 2.0.0
+version: 2.0.1
 repository: https://github.com/simolus3/tar/
 topics:
  - tar
@@ -16,7 +16,7 @@
 
 dev_dependencies:
   charcode: ^1.2.0
-  lints: ^5.0.0
+  lints: ^6.0.0
   file: ^7.0.0
   path: ^1.8.0
   test: ^1.20.0
diff --git a/test/format_test.dart b/test/format_test.dart
index c42d68f..b74a3bf 100644
--- a/test/format_test.dart
+++ b/test/format_test.dart
@@ -35,7 +35,7 @@
 
 TypeMatcher<MaybeTarFormat> _isFormat(String representation) {
   return isA<MaybeTarFormat>()
-      .having((e) => e.toString(), 'toString()', representation);
+      .having((e) => e.description, 'description', representation);
 }
 
 TypeMatcher<MaybeTarFormat> get _isInvalid {
