diff --git a/.github/workflows/intl4x.yml b/.github/workflows/intl4x.yml
index 6d3b656..4e4bc66 100644
--- a/.github/workflows/intl4x.yml
+++ b/.github/workflows/intl4x.yml
@@ -47,7 +47,7 @@
 
       - run: dart test -p chrome
 
-      - run: dart --enable-experiment=record-use build cli bin/example.dart
+      - run: dart --enable-experiment=record-use build cli --target example.dart
         working-directory: pkgs/intl4x/example
 
       - run: tree . -a
diff --git a/.gitignore b/.gitignore
index a13b04f..3ca347c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,3 +20,4 @@
 .vscode
 
 doc/
+build/
\ No newline at end of file
diff --git a/pkgs/intl4x/CHANGELOG.md b/pkgs/intl4x/CHANGELOG.md
index a361e90..4a88f23 100644
--- a/pkgs/intl4x/CHANGELOG.md
+++ b/pkgs/intl4x/CHANGELOG.md
@@ -5,7 +5,7 @@
   - Remove most ...Options objects from the public API, as they make it more verbose. Users now directly input the options to the top-level ...Format constructor.
   - Use => instead of block bodies for methods where possible.
   - Fix some imports
-  - Add documentation to some classes (more to follow!)
+  - Add documentation to some classes.
   - Remove some methods which are not implemented in ICU4X
 
 ## 0.14.0
diff --git a/pkgs/intl4x/README.md b/pkgs/intl4x/README.md
index c5f9340..85fb6f6 100644
--- a/pkgs/intl4x/README.md
+++ b/pkgs/intl4x/README.md
@@ -2,9 +2,9 @@
 [![Pub](https://img.shields.io/pub/v/intl4x.svg)](https://pub.dev/packages/intl4x)
 [![package publisher](https://img.shields.io/pub/publisher/intl4x.svg)](https://pub.dev/packages/intl4x/publisher)
 
-A lightweight modular library for internationalization (i18n) functionality.
+# `intl4x`
 
-## Features
+A lightweight, modular library for internationalization (i18n) in Dart, providing locale-sensitive formatting, featuring:
 
 * Formatting for dates, numbers, and lists. 
 * Collation.
@@ -13,40 +13,158 @@
 
 ## Status - experimental
 
-We're actively iterating on the API for this package (please provide feedback
-via our [issue tracker](https://github.com/dart-lang/i18n/issues)).
+We're actively iterating on the API for this package. Please provide feedback via our [issue tracker](https://github.com/dart-lang/i18n/issues).
 
-|   | Number format | List format | Date format | Collation | Display names | Plural rules | Case mapping |
-|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
-| **ECMA402 (web)** | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
-| **ICU4X (web/native)**  | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
+## Backends
 
-## Implementation and Goals
+This library uses different backends on different platforms:
 
-* Wraps around [ICU4X](https://github.com/unicode-org/icu4x) on native or web
-  platforms.
-* Wraps around the built-in browser functionalities on the web.
-    * Select which locales you want to use the browser for through an ``.
+*   **ICU4X**: Wraps [ICU4X](https://github.com/unicode-org/icu4x) to provide i18n functionality on both native platforms.
+*   **ECMA / Browser**: Wraps the browser's built-in [`Intl`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) functionalities for web-only applications, reducing bundle size.
 
-## Example
+## Installation
 
-The functionalities are called through getters on an `Intl` instance, i.e.
+Add `intl4x` to your `pubspec.yaml`:
+
+```shell
+dart pub add intl4x
+```
+
+
+## Limitations
+
+There are still some features missing:
+
+ * Compact, percent, unit, and currency formatting.
+ * Display names for calendar, currency, date time fields, and scripts.
+
+## Features
+
+### Date & Time Formatting
+
+Format `DateTime` objects into locale-sensitive strings for dates, times, and time zones.
+
+```dart
+import 'package:intl4x/datetime_format.dart';
+
+void main() {
+  final dateTime = DateTime(2024, 7, 1, 8, 50, 07);
+  final germanLocale = Locale.parse('de-DE');
+
+  final formatter = DateTimeFormat.yearMonthDayTime(
+    locale: germanLocale,
+    length: DateTimeLength.long,
+  ).withTimeZoneLong();
+
+  // Format with a specific timezone
+  print(formatter.format(dateTime, 'Europe/Berlin')); 
+  // prints "1. Juli 2024 um 10:50:07 Mitteleuropäische Sommerzeit"
+}
+```
+
+### Number Formatting
+
+Format numbers as decimals, percentages, or in compact form with locale-specific rules.
 
 ```dart
 import 'package:intl4x/number_format.dart';
 
 void main() {
-  final numberFormat = NumberFormat.percent(locale: Locale.parse('en-US'));
+  final locale = Locale.parse('en-US');
 
-  print(numberFormat.format(0.5)); // prints 50%
+  final compactFormat = NumberFormat.compact(locale: locale);
+  print(compactFormat.format(12345)); // "12K"
+
+  final percentFormat = NumberFormat.percent(locale: locale);
+  print(percentFormat.format(0.987)); // "99%"
 }
 ```
 
-## Installation
+### Collation (String Sorting)
 
-The easiest setup is 
+Sort lists of strings with locale-aware collation.
+
+```dart
+import 'package:intl4x/collation.dart';
+
+void main() {
+  final list = ['Z', 'a', 'z', 'ä'];
+  final german = Collation(locale: Locale.parse('de-DE'));
+
+  list.sort(german.compare);
+
+  print(list); // prints "[a, ä, z, Z]"
+}
 ```
-dart pub add intl4x
-dart run ...
+
+### Display Names
+
+Get localized display names for locales, regions, scripts, and currencies.
+
+```dart
+import 'package:intl4x/display_names.dart';
+
+void main() {
+  final displayNames = DisplayNames(locale: Locale.parse('en'));
+
+  print(displayNames.ofLocale(Locale.parse('fr-CA'))); // "Canadian French"
+  print(displayNames.ofRegion('419')); // "Latin America"
+}
 ```
-This will download the binaries from Github
+
+### List Formatting
+
+Join lists of items into a grammatically correct, locale-sensitive string.
+
+```dart
+import 'package:intl4x/list_format.dart';
+
+void main() {
+  final list = ['apples', 'bananas', 'oranges'];
+  final english = Locale.parse('en');
+  
+  print(list.joinAnd(locale: english)); // "apples, bananas, and oranges"
+  print(list.joinOr(locale: english));  // "apples, bananas, or oranges"
+}
+```
+
+### Plural Rules
+
+Select the correct plural category for a given number based on locale rules (e.g., `one`, `few`, `many`).
+
+```dart
+import 'package:intl4x/plural_rules.dart';
+
+void main() {
+  final rules = PluralRules(
+    locale: Locale.parse('en-US'),
+    type: PluralType.ordinal,
+  );
+
+  print(rules.select(1)); // PluralCategory.one (st)
+  print(rules.select(2)); // PluralCategory.two (nd)
+  print(rules.select(3)); // PluralCategory.few (rd)
+  print(rules.select(4)); // PluralCategory.other (th)
+}
+```
+
+### Case Mapping
+
+Change the case of strings according to locale-specific rules.
+
+```dart
+import 'package:intl4x/case_mapping.dart';
+
+void main() {
+  final tr = Locale.parse('tr');
+  final en = Locale.parse('en');
+
+  final upper = 'TICKET';
+  print(upper.toLocaleLowerCase(en)); // ticket
+  print(upper.toLocaleLowerCase(tr)); // tıcket
+  
+  final lower = 'i';
+  print(lower.toLocaleUpperCase(en)); // I
+  print(lower.toLocaleUpperCase(tr)); // İ
+}
+```
\ No newline at end of file
diff --git a/pkgs/intl4x/example/.gitignore b/pkgs/intl4x/example/.gitignore
deleted file mode 100644
index 4dda46f..0000000
--- a/pkgs/intl4x/example/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# https://dart.dev/guides/libraries/private-files
-# Created by `dart pub`
-.dart_tool/
-build/
diff --git a/pkgs/intl4x/example/analysis_options.yaml b/pkgs/intl4x/example/analysis_options.yaml
deleted file mode 100644
index 81aa71c..0000000
--- a/pkgs/intl4x/example/analysis_options.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-include: package:dart_flutter_team_lints/analysis_options.yaml
-
-linter:
-  rules:
-    - prefer_relative_imports
diff --git a/pkgs/intl4x/example/bin/example.dart b/pkgs/intl4x/example/example.dart
similarity index 100%
rename from pkgs/intl4x/example/bin/example.dart
rename to pkgs/intl4x/example/example.dart
diff --git a/pkgs/intl4x/example/pubspec.yaml b/pkgs/intl4x/example/pubspec.yaml
deleted file mode 100644
index 9708bd4..0000000
--- a/pkgs/intl4x/example/pubspec.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-name: example
-description: A sample application using intl4x.
-
-environment:
-  sdk: ^3.9.3
-
-publish_to: none
-
-dependencies:
-  intl4x:
-    path: ../
-
-dev_dependencies:
-  dart_flutter_team_lints: ^3.0.0
diff --git a/pkgs/intl4x/lib/case_mapping.dart b/pkgs/intl4x/lib/case_mapping.dart
index 8f5d6fa..60e6746 100644
--- a/pkgs/intl4x/lib/case_mapping.dart
+++ b/pkgs/intl4x/lib/case_mapping.dart
@@ -8,14 +8,20 @@
 /// based on the current locale.
 ///
 /// ```dart
-/// import 'package:intl4x/case_mapping.dart';
+///import 'package:intl4x/case_mapping.dart';
 ///
-/// void main() {
-///   print('i'.toLocaleUpperCase()); // Prints 'İ'
+///void main() {
+///  final tr = Locale.parse('tr');
+///  final en = Locale.parse('en');
 ///
-///   final caseMapping = CaseMapping(locale: Locale('tr'));
-///   print(caseMapping.toUpperCase('i')); // Prints 'İ'
-/// }
+///  final upper = 'TICKET';
+///  print(upper.toLocaleLowerCase(en)); // ticket
+///  print(upper.toLocaleLowerCase(tr)); // tıcket
+///
+///  final lower = 'i';
+///  print(lower.toLocaleUpperCase(en)); // I
+///  print(lower.toLocaleUpperCase(tr)); // İ
+///}
 /// ```
 /// Available either as an extension on [String], or through the
 /// [CaseMapping] class.
diff --git a/pkgs/intl4x/lib/collation.dart b/pkgs/intl4x/lib/collation.dart
index 878dbb2..01162cf 100644
--- a/pkgs/intl4x/lib/collation.dart
+++ b/pkgs/intl4x/lib/collation.dart
@@ -4,9 +4,6 @@
 
 /// Provides locale-sensitive string comparison.
 ///
-/// Available either as an extension on [String], or through the
-/// [Collation] class.
-///
 /// ```dart
 /// import 'package:intl4x/collation.dart';
 ///
@@ -21,6 +18,9 @@
 ///   print(list); // Prints [a, b, ä]
 /// }
 /// ```
+///
+/// Available either as an extension on [String], or through the
+/// [Collation] class.
 library;
 
 import 'src/collation/collation.dart' show Collation;
diff --git a/pkgs/intl4x/lib/datetime_format.dart b/pkgs/intl4x/lib/datetime_format.dart
index a683866..ef3e473 100644
--- a/pkgs/intl4x/lib/datetime_format.dart
+++ b/pkgs/intl4x/lib/datetime_format.dart
@@ -2,6 +2,52 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+/// Locale-sensitive date and time formatting.
+///
+/// Use the [DateTimeFormat] class to format dates and times in a
+/// locale-sensitive manner.
+///
+/// ```dart
+/// import 'package:intl4x/datetime_format.dart';
+///
+/// void main() {
+///   final timeZone = 'Europe/Paris';
+///   final dateTime = DateTime.parse('2024-07-01T08:50:07');
+///
+///   final formatter = DateTimeFormat.yearMonthDayTime(
+///     locale: Locale.parse('en'),
+///     length: DateTimeLength.long,
+///   ).withTimeZoneShort();
+///   print(
+///     formatter.format(dateTime, timeZone),
+///   ); // prints 'July 1, 2024 at 8:50:07 AM GMT+2'
+/// }
+/// ```
+///
+/// The formatters are
+/// * [DateTimeFormat.day]
+/// * [DateTimeFormat.month]
+/// * [DateTimeFormat.monthDay]
+/// * [DateTimeFormat.monthDayTime]
+/// * [DateTimeFormat.year]
+/// * [DateTimeFormat.yearMonthDay]
+/// * [DateTimeFormat.yearMonthDayTime]
+/// * [DateTimeFormat.yearMonthDayWeekday]
+/// * [DateTimeFormat.yearMonthDayWeekdayTime]
+/// * [DateTimeFormat.time]
+///
+/// and the zoned variants through
+/// * [DateTimeFormatter.withTimeZoneShort]
+/// * [DateTimeFormatter.withTimeZoneLong]
+/// * [DateTimeFormatter.withTimeZoneShortOffset]
+/// * [DateTimeFormatter.withTimeZoneLongOffset]
+/// * [DateTimeFormatter.withTimeZoneShortGeneric]
+/// * [DateTimeFormatter.withTimeZoneLongGeneric]
+library;
+
+import 'src/datetime_format/datetime_format.dart' show DateTimeFormat;
+import 'src/datetime_format/datetime_format_impl.dart' show DateTimeFormatter;
+
 export 'src/datetime_format/datetime_format.dart' show DateTimeFormat;
 export 'src/datetime_format/datetime_format_impl.dart'
     show DateTimeFormatter, ZonedDateTimeFormatter;
diff --git a/pkgs/intl4x/lib/number_format.dart b/pkgs/intl4x/lib/number_format.dart
index ce75f16..40a5706 100644
--- a/pkgs/intl4x/lib/number_format.dart
+++ b/pkgs/intl4x/lib/number_format.dart
@@ -2,6 +2,29 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+/// Provides locale-sensitive number formatting.
+///
+/// Use the [NumberFormat] class to format numbers in a locale-sensitive
+/// manner.
+///
+/// ```dart
+/// import 'package:intl4x/number_format.dart';
+///
+/// void main() {
+///   print(
+///     NumberFormat(
+///       locale: Locale.parse('en'),
+///       roundingMode: RoundingMode.ceil,
+///       digits: const Digits.withFractionDigits(maximum: 1),
+///     ).format(3.14),
+///   ); // prints '3.2'
+/// }
+///
+/// ```
+library;
+
+import 'src/number_format/number_format.dart' show NumberFormat;
+
 export 'src/locale/locale.dart' show Locale;
 export 'src/number_format/number_format.dart' show NumberFormat;
 export 'src/number_format/number_format_options.dart'
diff --git a/pkgs/intl4x/lib/plural_rules.dart b/pkgs/intl4x/lib/plural_rules.dart
index 809ce27..e50f71c 100644
--- a/pkgs/intl4x/lib/plural_rules.dart
+++ b/pkgs/intl4x/lib/plural_rules.dart
@@ -2,6 +2,26 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+/// The appropriate locale-dependent plural form.
+///
+/// The [PluralRules] object returns the [PluralCategory] of the input [num]
+/// to [PluralRules.select]. While English only uses 'one' and 'other', other
+/// languages have more plural forms. For example, Arabic uses 'zero', 'one',
+/// 'two', 'few', 'many', and 'other'.
+///
+/// Example:
+/// ```dart
+/// import 'package:intl4x/plural_rules.dart';
+///
+/// void main() {
+///   final rules = PluralRules(locale: Locale.parse('en-US'));
+///   print(rules.select(3)); // prints 'PluralCategory.other'
+/// }
+/// ```
+library;
+
+import 'src/plural_rules/plural_rules.dart' show PluralCategory, PluralRules;
+
 export 'src/locale/locale.dart' show Locale;
 export 'src/plural_rules/plural_rules.dart' show PluralCategory, PluralRules;
 export 'src/plural_rules/plural_rules_options.dart'
diff --git a/pkgs/intl4x/lib/src/datetime_format/datetime_format.dart b/pkgs/intl4x/lib/src/datetime_format/datetime_format.dart
index adbc80d..e74d2ac 100644
--- a/pkgs/intl4x/lib/src/datetime_format/datetime_format.dart
+++ b/pkgs/intl4x/lib/src/datetime_format/datetime_format.dart
@@ -18,7 +18,7 @@
 /// import 'package:intl4x/datetime_format.dart';
 ///
 /// void main() {
-///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+///   final date = DateTime(2021, 12, 17, 4, 0, 42);
 ///   print(DateTimeFormat.time(locale: Locale.parse('fr')).format(date));
 ///   // Output: '04:00'
 /// }
@@ -31,7 +31,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.day().format(date)); // Output: '17'
   /// }
   /// ```
@@ -50,7 +50,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.month().format(date)); // Output: 'Dec'
   /// }
   /// ```
@@ -69,7 +69,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.monthDay().format(date)); // Output: 'Dec 17'
   /// }
   /// ```
@@ -88,7 +88,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.year().format(date)); // Output: '2021'
   /// }
   /// ```
@@ -108,7 +108,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.yearMonthDay().format(date)); // Output: 'Dec 17, 2021'
   /// }
   /// ```
@@ -128,7 +128,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.yearMonthDayWeekday().format(date)); // Output: 'Fri, Dec 17, 2021'
   /// }
   /// ```
@@ -148,7 +148,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.monthDayTime().format(date)); // Output: 'Dec 17, 4:00 AM'
   /// }
   /// ```
@@ -168,7 +168,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.yearMonthDayTime().format(date)); // Output: 'Dec 17, 2021, 4:00 AM'
   /// }
   /// ```
@@ -192,7 +192,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.yearMonthDayWeekdayTime().format(date)); // Output: 'Fri, Dec 17, 2021, 4:00 AM'
   /// }
   /// ```
@@ -216,7 +216,7 @@
   /// import 'package:intl4x/datetime_format.dart';
   ///
   /// void main() {
-  ///   final date = DateTime.utc(2021, 12, 17, 4, 0, 42);
+  ///   final date = DateTime(2021, 12, 17, 4, 0, 42);
   ///   print(DateTimeFormat.time().format(date)); // Output: '4:00 AM'
   /// }
   /// ```
diff --git a/pkgs/intl4x/lib/src/number_format/number_format.dart b/pkgs/intl4x/lib/src/number_format/number_format.dart
index 74b4e0e..7ea073a 100644
--- a/pkgs/intl4x/lib/src/number_format/number_format.dart
+++ b/pkgs/intl4x/lib/src/number_format/number_format.dart
@@ -86,6 +86,8 @@
 
   /// Creates a [NumberFormat] instance for compact number formatting.
   ///
+  /// WARNING: Not implemented on native yet.
+  ///
   /// Compact notation is a way to format numbers that are very large or very
   /// small in a more human-readable way, e.g., "1.2M" instead of "1,200,000".
   ///
@@ -116,6 +118,7 @@
   ///   print(NumberFormat.compact().format(1234567)); // Prints '1.2M'
   /// }
   /// ```
+  //TODO: implement in ICU4X
   NumberFormat.compact({
     Locale? locale,
     CompactDisplay compactDisplay = CompactDisplay.short,
@@ -145,6 +148,8 @@
 
   /// Creates a [NumberFormat] instance for percent formatting.
   ///
+  /// WARNING: Not implemented on native yet.
+  ///
   /// * [locale]: The locale to use for formatting. Defaults to the system
   ///   locale.
   /// * [signDisplay]: When to display the sign for the number. Defaults to
@@ -170,6 +175,7 @@
   ///   print(NumberFormat.percent().format(0.5)); // Prints '50%'
   /// }
   /// ```
+  //TODO: Implement in ICU4X
   NumberFormat.percent({
     Locale? locale,
     SignDisplay signDisplay = SignDisplay.auto,
@@ -196,6 +202,8 @@
 
   /// Creates a [NumberFormat] instance for currency formatting.
   ///
+  /// WARNING: Not implemented on native yet.
+  ///
   /// * [locale]: The locale to use for formatting. Defaults to the system
   ///   locale.
   /// * [currency]: The 3-letter ISO 4217 currency code (e.g., 'USD') to use.
diff --git a/pkgs/intl4x/pubspec.yaml b/pkgs/intl4x/pubspec.yaml
index 0353ee7..a1e00b5 100644
--- a/pkgs/intl4x/pubspec.yaml
+++ b/pkgs/intl4x/pubspec.yaml
@@ -30,5 +30,5 @@
 dev_dependencies:
   args: ^2.7.0
   dart_flutter_team_lints: ^3.5.2
-  dart_style: ^3.1.2
-  test: ^1.26.3
+  dart_style: ^3.1.3
+  test: ^1.28.0
diff --git a/pkgs/intl4x/test/plural_rules_test.dart b/pkgs/intl4x/test/plural_rules_test.dart
index 436ba46..f79774c 100644
--- a/pkgs/intl4x/test/plural_rules_test.dart
+++ b/pkgs/intl4x/test/plural_rules_test.dart
@@ -8,35 +8,35 @@
 
 void main() {
   testWithFormatting('en-US simple', () {
-    final numberFormatOptions = PluralRules(locale: Locale.parse('en-US'));
+    final rules = PluralRules(locale: Locale.parse('en-US'));
 
-    expect(numberFormatOptions.select(0), PluralCategory.other);
-    expect(numberFormatOptions.select(1), PluralCategory.one);
-    expect(numberFormatOptions.select(2), PluralCategory.other);
-    expect(numberFormatOptions.select(3), PluralCategory.other);
+    expect(rules.select(0), PluralCategory.other);
+    expect(rules.select(1), PluralCategory.one);
+    expect(rules.select(2), PluralCategory.other);
+    expect(rules.select(3), PluralCategory.other);
   });
 
   testWithFormatting('ar-EG simple', () {
-    final numberFormatOptions = PluralRules(locale: Locale.parse('ar-EG'));
+    final rules = PluralRules(locale: Locale.parse('ar-EG'));
 
-    expect(numberFormatOptions.select(0), PluralCategory.zero);
-    expect(numberFormatOptions.select(1), PluralCategory.one);
-    expect(numberFormatOptions.select(2), PluralCategory.two);
-    expect(numberFormatOptions.select(6), PluralCategory.few);
-    expect(numberFormatOptions.select(18), PluralCategory.many);
+    expect(rules.select(0), PluralCategory.zero);
+    expect(rules.select(1), PluralCategory.one);
+    expect(rules.select(2), PluralCategory.two);
+    expect(rules.select(6), PluralCategory.few);
+    expect(rules.select(18), PluralCategory.many);
   });
 
   testWithFormatting('en-US ordinal', () {
-    final numberFormatOptions = PluralRules(
+    final rules = PluralRules(
       locale: Locale.parse('en-US'),
       type: PluralType.ordinal,
     );
 
-    expect(numberFormatOptions.select(0), PluralCategory.other);
-    expect(numberFormatOptions.select(1), PluralCategory.one);
-    expect(numberFormatOptions.select(2), PluralCategory.two);
-    expect(numberFormatOptions.select(3), PluralCategory.few);
-    expect(numberFormatOptions.select(4), PluralCategory.other);
-    expect(numberFormatOptions.select(21), PluralCategory.one);
+    expect(rules.select(0), PluralCategory.other);
+    expect(rules.select(1), PluralCategory.one);
+    expect(rules.select(2), PluralCategory.two);
+    expect(rules.select(3), PluralCategory.few);
+    expect(rules.select(4), PluralCategory.other);
+    expect(rules.select(21), PluralCategory.one);
   });
 }
