diff --git a/README.md b/README.md
index efe687f9..8e47bdbb 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,140 @@
-
+ nugetizer
+===
-# NuGetizer 3000
+Simple, flexible, intuitive and powerful NuGet packaging.
-Simple, flexible and powerful NuGet packaging
+## Why
-For the original design and intended goals and features, check out the [spec](https://github.com/NuGet/Home/wiki/NuGetizer-3000).
+The .NET SDK has built-in support for packing. The design of its targets, property
+and item names it not very consistent, however. When packing non-trivial solutions
+with multiple projects, it's quite hard to actually get it to pack exactly the
+way you want it to.
-## Why
+An [alternative clean and clear design](https://github.com/NuGet/Home/wiki/NuGetizer-3000)
+was proposed and I got to implement the initial spec, but it never got traction
+with the NuGet team.
+
+## What
+
+With the learnings from years of building and shipping packages of different
+levels of complexity, as well as significant use of the SDK Pack functionality
+and its various extension points, NuGetizer takes a fresh look and exposes a
+clean set of primitives so that you never have to create `.nuspec` files again.
+
+All the [built-in properties](https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets#pack-target)
+are supported.
+
+A key difference is that adding arbitrary content to the package is supported
+with the first-class `PackageFile` item for absolute control of the package
+contents.
+
+```xml
+
+
+
+```
+
+Another key design choice is that any package content inference should be trivial
+to turn off wholesale in case the heuristics don't do exactly what you need. Just set
+`EnablePackInference=false` and you will only get explicit `PackageFile` items
+in your package.
+
+### Package Inference
+
+Package inference provides some built-in heuristics for common scenarios so you
+don't have to customize the packing much. It works by transforming various built-in
+items into corresponding `PackageFile` items, much as if you had added them by
+hand.
+
+Inference can be turned off for specific items by just adding `Pack="false"`
+item metadata.
+
+The default transformations are:
+
+| Source | Inferred | Notes |
+| --------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
+| Project build output | `` | Kind defaults to `Lib`. Includes .xml and .pdb if they are generated. (1) |
+| `` | `` | `PrivateAssets=all` is present, it's not added as dependency. (2) |
+| `` | `` | Regular content that's not part of the build output |
+| `` | `` | `` | |
+| `` | ` dotnet tool install -g dotnet-nugetize
+```
-I got sick of trying to modify the gazillion properties, weird item, property and target names and more from the built-in SDK Pack targets, and still never quite achieving the simple goals I had in mind. Also, the original clean and clear design from [NuGetizer](https://github.com/NuGet/NuGetizer) never got traction or support from the NuGet team, so the weirdness kept evolving in ever more incomprehensible ways ¯\_(ツ)_/¯.
+After installation, you can just run `nugetize` from the project directory to quickly get a report of the package that would be generated. This is done in the fastest possible way without compromising your customizations to the build process. They way this is achieved is by a combination of a simulated [design-time build](https://github.com/dotnet/project-system/blob/master/docs/design-time-builds.md) that skips the compiler invocation and avoids the output file copying entirely, and built-in support in NuGetizer to emit the entire contents of the package as MSBuild items with full metadata, that the tool can use to render an accurate report that contains exactly the same information that would be used to actually emit the final `.nupkg` without actually emitting it.
-So, on to forking and shipping for real the simplified, understandable way of packing your libraries.
+Here's a sample output screenshot:
+
diff --git a/img/dotnet-nugetize-xplat.png b/img/dotnet-nugetize-xplat.png
new file mode 100644
index 00000000..dabb14f8
Binary files /dev/null and b/img/dotnet-nugetize-xplat.png differ
diff --git a/img/dotnet-nugetize.png b/img/dotnet-nugetize.png
new file mode 100644
index 00000000..763ed951
Binary files /dev/null and b/img/dotnet-nugetize.png differ
diff --git a/src/dotnet-nugetize/Properties/.gitignore b/src/dotnet-nugetize/Properties/.gitignore
new file mode 100644
index 00000000..8392c905
--- /dev/null
+++ b/src/dotnet-nugetize/Properties/.gitignore
@@ -0,0 +1 @@
+launchSettings.json
\ No newline at end of file