diff --git a/packages/envied/README.md b/packages/envied/README.md
index b97ced3..017f17d 100644
--- a/packages/envied/README.md
+++ b/packages/envied/README.md
@@ -221,6 +221,154 @@ static const String apiKey; // Searches for a variable named 'DEBUG_API_KEY' ins
These example illustrates how the field name `apiKey` is automatically transformed to `API_KEY`, adhering to the `CONSTANT_CASE` convention commonly used as the variable name inside the `.env` file. This feature contributes to improved code consistency and readability, while also aligning with [Effective Dart](https://dart.dev/effective-dart) naming conventions.
+### Known issues
+
+When modifying the `.env` file, the generator might not pick up the change. In that case simp
+
+## Usage
+
+Add a `.env` file at the root of the project. The name of this file can be specified in your Envied class if you call it something else such as `.env.dev`.
+
+```.env
+KEY1=VALUE1
+KEY2=VALUE2
+```
+
+Create a class to ingest the environment variables (`lib/env/env.dart`). Add the annotations for Envied on the class and EnviedField for any environment variables you want to be pulled from your `.env` file.
+
+> IMPORTANT! Add both `.env` and `env.g.dart` files to your `.gitignore` file, otherwise, you might expose your environment variables.
+
+```dart
+// lib/env/env.dart
+import 'package:envied/envied.dart';
+
+part 'env.g.dart';
+
+@Envied(path: '.env.dev')
+abstract class Env {
+ @EnviedField(varName: 'KEY1')
+ static const key1 = _Env.key1;
+ @EnviedField()
+ static const KEY2 = _Env.KEY2;
+ @EnviedField(defaultValue: 'test_')
+ static const key3 = _Env.key3;
+}
+```
+
+Then run the generator:
+
+```sh
+dart run build_runner build
+```
+
+You can then use the Env class to access your environment variables:
+
+```dart
+print(Env.key1); // "VALUE1"
+print(Env.KEY2); // "VALUE2"
+```
+
+### Obfuscation/Encryption
+
+Add the `obfuscate` flag to EnviedField
+
+```dart
+@EnviedField(obfuscate: true)
+```
+
+**Please keep in mind that this only increases the amount of effort to retrieve the
+obfuscated/encrypted values. If someone tries hard enough, he will eventually find the values.
+For more information, see https://github.com/frencojobs/envify/pull/28 and
+https://github.com/petercinibulk/envied/pull/4!**
+
+### **Optional Environment Variables**
+
+Enable `allowOptionalFields` to allow nullable types. When a default
+value is not provided and the type is nullable, the generator will
+assign the value to null instead of throwing an exception.
+
+By default, optional fields are not enabled because it could be
+confusing while debugging. If a field is nullable and a default
+value is not provided, it will not throw an exception if it is
+missing an environment variable.
+
+For example, this could be useful if you are using an analytics service
+for an open-source app, but you don't want to require users or contributors
+to provide an API key if they build the app themselves.
+
+```dart
+@Envied(allowOptionalFields: true)
+abstract class Env {
+ @EnviedField()
+ static const String? optionalServiceApiKey = _Env.optionalServiceApiKey;
+}
+```
+
+Optional fields can also be enabled on a per-field basis by setting
+
+```dart
+@EnviedField(optional: true)
+```
+
+### **Environment Variable Naming Conventions**
+
+The `envied` package provides a convenient way to handle environment variables in Dart applications. With the addition of the `useConstantCase` flag in the `@EnvField` and `@Envied` annotation, developers can now easily adhere to the [Dart convention](https://dart.dev/effective-dart/style#do-name-other-identifiers-using-lowercamelcase) for constant names. The `useConstantCase` flag allows the automatic transformation of field names from `camelCase` to `CONSTANT_CASE` when the `@EnvField` annotation is not explicitly assigned a `varName`.
+
+By default, this is set to `false`, which means that the field name will retain its original format unless `varName` is specified. When set to `true`, the field name will be automatically transformed into `CONSTANT_CASE`, which is a commonly used case type for environment variable names.
+
+```dart
+
+@Envied(path: '.env', useConstantCase: true)
+final class Env {
+
+ @EnviedField()
+ static const String apiKey = _Env.apiKey; // Transformed to 'API_KEY'
+
+
+ @EnviedField(varName: 'apiKey')
+ static const String apiKey = _Env.apiKey; // Searches for a variable named 'apiKey' inside the .env file and assigns it to apiKey
+
+}
+```
+
+This option can also be enabled on a per-field basis by setting
+
+```dart
+@EnviedField(useConstantCase: true)
+static const String apiKey; // Transformed to 'API_KEY'
+
+@EnviedField()
+static const String apiKey; // Retains its original value, which is `apiKey`
+
+@EnviedField(varName: 'DEBUG_API_KEY')
+static const String apiKey; // Searches for a variable named 'DEBUG_API_KEY' inside the .env file and assigns it to apiKey
+
+```
+
+These example illustrates how the field name `apiKey` is automatically transformed to `API_KEY`, adhering to the `CONSTANT_CASE` convention commonly used as the variable name inside the `.env` file. This feature contributes to improved code consistency and readability, while also aligning with [Effective Dart](https://dart.dev/effective-dart) naming conventions.
+
+### Known issues
+
+When modifying the `.env` file, the generator might not pick up the change due to [dart-lang/build#967](https://github.com/dart-lang/build/issues/967).
+If that happens simply clean the build cache and run the generator again.
+
+```bash
+dart run build_runner clean
+dart run build_runner build --delete-conflicting-outputs
+```
+
+For more information please see [petercinibulk/envied#6](https://github.com/petercinibulk/envied/issues/6#issuecomment-1243434607)
+and/or the [dart-lang/build#967](https://github.com/dart-lang/build/issues/967).
+
+
+
+## License
+
+MIT © Peter Cinibulk
+ly clean the build cache and run the generator again.
+
+```sh
+
## License