diff --git a/src/PolySharp.Package/PolySharp.Package.msbuildproj b/src/PolySharp.Package/PolySharp.Package.msbuildproj
index d782c03..5d957b5 100644
--- a/src/PolySharp.Package/PolySharp.Package.msbuildproj
+++ b/src/PolySharp.Package/PolySharp.Package.msbuildproj
@@ -13,7 +13,7 @@
-
+
diff --git a/src/PolySharp.Package/README.md b/src/PolySharp.Package/README.md
new file mode 100644
index 0000000..7117fba
--- /dev/null
+++ b/src/PolySharp.Package/README.md
@@ -0,0 +1,78 @@
+![image](https://user-images.githubusercontent.com/10199417/197341200-3810e13c-9104-4911-90fc-b8add0862458.png)
+
+# What is it? 🚀
+
+**PolySharp** provides generated, source-only polyfills for C# language features, to easily use all runtime-agnostic features downlevel. The package is distributed as a source generator, so that it will automatically detect which polyfills are needed depending on the target framework and project in use: just add a reference to **PolySharp**, set your C# language version to latest, and have fun!
+
+# TLDR? What is this for? ✨
+
+Put simply: are you working on .NET Framework, or UWP, or some other older .NET runtime and still would like to use all the cool new features that C# 11 has? Well this library lets you do just that! It will generate for you all the "magic types" that the C# compiler needs to "see" in order for it to allow using new language features even if you're not using the latest framework out there.
+
+Here's an example of some of the new features that **PolySharp** can enable downlevel:
+
+![image](https://user-images.githubusercontent.com/10199417/198630498-df1e215c-6788-4aef-8ba5-b0b71772233e.png)
+
+> **Note**: not all the new C# features can be "tricked" this way (eg. those requiring runtime support, such as [static abstract members](https://learn.microsoft.com/dotnet/csharp/whats-new/tutorials/static-virtual-interface-members), still won't work). But almost everything else will (eg. nullability annotations, pattern matching, etc.), and this applies to a big number of new C# features. Try **PolySharp** out, don't get stuck on C# 6.0 or other older versions! 🎉
+
+> **Note**: use on .NET Framework 3.5 is particularly limited due to shortcomings of the BCL there. In particular, the `System.Range` type will not be generated unless `System.ValueTuple` is referenced (meaning that eg. list patterns won't work by default), and some features such as records will not be usable at all due to the C# compiler missing some necessary APIs that cannot be polifilled. All other features should work as expected.
+
+# Documentation 📖
+
+**PolySharp** includes the following polyfills:
+- Nullability attributes (for [nullable reference types](https://learn.microsoft.com/dotnet/csharp/nullable-references)):
+ - `[AllowNull]`
+ - `[DisallowNull]`
+ - `[DoesNotReturn]`
+ - `[DoesNotReturnIf]`
+ - `[MaybeNull]`
+ - `[MaybeNullWhen]`
+ - `[MemberNotNull]`
+ - `[MemberNotNullWhen]`
+ - `[NotNull]`
+ - `[NotNullIfNotNull]`
+ - `[NotNullWhen]`
+- `Index` and `Range` (see [indices and ranges](https://learn.microsoft.com/dotnet/csharp/whats-new/tutorials/ranges-indexes))
+- `[UnscopedRef]` (see [low-level struct improvements](https://github.com/dotnet/csharplang/blob/main/proposals/low-level-struct-improvements.md))
+- Required members (see [required modifier](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/required))
+ - `[RequiredMember]`
+ - `[SetsRequiredMembers]`
+- `[CompilerFeatureRequired]` (needed to support several features)
+- `[IsExternalInit]` (needed for [init-only properties](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/init))
+- `[SkipLocalsInit]` (see [docs](https://learn.microsoft.com/dotnet/csharp/language-reference/attributes/general#skiplocalsinit-attribute))
+- Interpolated string handlers (see [docs](https://learn.microsoft.com/dotnet/csharp/whats-new/tutorials/interpolated-string-handler))
+ - `[InterpolatedStringHandler]`
+ - `[InterpolatedStringHandlerArgument]`
+- `[CallerArgumentExpression]` (see [docs](https://learn.microsoft.com/dotnet/csharp/language-reference/proposals/csharp-10.0/caller-argument-expression))
+- `[RequiresPreviewFeatures]` (needed for [preview features](https://github.com/dotnet/designs/blob/main/accepted/2021/preview-features/preview-features.md))
+- `[AsyncMethodBuilder]` (needed for [custom method builder types](https://learn.microsoft.com/dotnet/csharp/language-reference/proposals/csharp-10.0/async-method-builders))
+- `[StringSyntax]` (needed to enable [syntax highlight in the IDE](https://github.com/dotnet/runtime/issues/62505))
+- `[ModuleInitializer]` (needed to enable [custom module initializers](https://learn.microsoft.com/dotnet/csharp/language-reference/proposals/csharp-9.0/module-initializers))
+
+To leverage them, make sure to bump your C# language version. You can do this by setting the `` MSBuild property in your project. For instance, by adding `11.0` (or your desired C# version) to the first `` of your .csproj file. For more info on this, [see here](https://sergiopedri.medium.com/enabling-and-using-c-9-features-on-older-and-unsupported-runtimes-ce384d8debb), but remember that you don't need to manually copy polyfills anymore: simply adding a reference to **PolySharp** will do this for you automatically.
+
+It also includes the following optional runtime-supported polyfills:
+- Reflection annotation attributes (see [docs](https://learn.microsoft.com/dotnet/core/deploying/trimming/prepare-libraries-for-trimming)):
+ - `[DynamicallyAccessedMembers]`
+ - `[DynamicDependency]`
+ - `[RequiresUnreferencedCode]`
+ - `[UnconditionalSuppressMessage]`
+- `[StackTraceHidden]` (see [here](https://makolyte.com/csharp-exclude-exception-throw-helper-methods-from-the-stack-trace/))
+- `[UnmanagedCallersOnly]` (see [docs](https://learn.microsoft.com/dotnet/api/system.runtime.interopservices.unmanagedcallersonlyattribute)))
+- Platform support annotation attributes (see [docs](https://learn.microsoft.com/dotnet/standard/analyzers/platform-compat-analyzer)):
+ - `[ObsoletedOSPlatform]`
+ - `[SupportedOSPlatform]`
+ - `[SupportedOSPlatformGuard]`
+ - `[TargetPlatform]`
+ - `[UnsupportedOSPlatform]`
+ - `[UnsupportedOSPlatformGuard]`
+- `[SuppressGCTransition]` (see [here](https://devblogs.microsoft.com/dotnet/improvements-in-native-code-interop-in-net-5-0/))
+
+# Options ⚙️
+
+**PolySharp**'s generation can be configured through some MSBuild properties to set in consuming projects.
+
+The following properties are available:
+- "PolySharpUsePublicAccessibilityForGeneratedTypes": makes all generated types public.
+- "PolySharpIncludeRuntimeSupportedAttributes": enables polyfills for (dummy) runtime-supported attributes too.
+- "PolySharpExcludeGeneratedTypes": excludes specific types from generation (';' or ',' separated type names).
+- "PolySharpIncludeGeneratedTypes": only includes specific types for generation (';' or ',' separated type names).