diff --git a/README.md b/README.md
index fc5e9c2..cdc8074 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # DotPulsar
 
-Native .NET/C# client library for [Apache Pulsar](https://pulsar.apache.org/).
+.NET/C# client library for [Apache Pulsar](https://pulsar.apache.org/).
 
 DotPulsar is written entirely in C# and implements Apache Pulsar's [binary protocol](https://pulsar.apache.org/docs/en/develop-binary-protocol/). Other options was using the [C++ client library](https://pulsar.apache.org/docs/en/client-libraries-cpp/) (which is what the [Python client](https://pulsar.apache.org/docs/en/client-libraries-python/) and [Go client](https://pulsar.apache.org/docs/en/client-libraries-go/) do) or build on top of the [WebSocket API](https://pulsar.apache.org/docs/en/client-libraries-websocket/). We decided to implement the binary protocol to gain full control and maximize portability and performance.
 
@@ -15,20 +15,25 @@
 ```csharp
 const string myTopic = "persistent://public/default/mytopic";
 
-using var client = PulsarClient.Builder().Build(); //Connecting to localhost:6650
+await using var client = PulsarClient.Builder()
+                                     .Build(); //Connecting to pulsar://localhost:6650
 
 var producer = client.NewProducer()
                      .Topic(myTopic)
                      .Create();
-await producer.Send(Encoding.UTF8.GetBytes("Hello World"));
+
+_ = await producer.Send(Encoding.UTF8.GetBytes("Hello World"));
 
 var consumer = client.NewConsumer()
                      .SubscriptionName("MySubscription")
                      .Topic(myTopic)
                      .Create();
-var message = await consumer.Receive();
-Console.WriteLine("Received: " + Encoding.UTF8.GetString(message.Data.ToArray()));
-await consumer.Acknowledge(message);
+
+await foreach (var message in consumer.Messages())
+{
+    Console.WriteLine("Received: " + Encoding.UTF8.GetString(message.Data.ToArray()));
+    await consumer.Acknowledge(message);
+}
 ```
 
 For a more in-depth tour of the API, please visit the [Wiki](https://github.com/danske-commodities/dotpulsar/wiki).
@@ -56,13 +61,13 @@
 
 ### 1.0.0
 
-Before the first stable release, we should have a look at:
+We are feature complete for this release. We just need testing.
 
-* Use IAsyncDisposable
-* Use IAsyncEnumerable
-* Consider using ValueTask instead of Task
-* Consider using nullable reference types
-* Look into the possibility of supporting .NET Standard 2.0
+- [X] Use IAsyncDisposable
+- [X] Use IAsyncEnumerable
+- [X] Use ValueTask instead of Task
+- [X] Make solution nullable
+- [X] Support .NET Standard 2.0 and 2.1
 
 ### Future
 
diff --git a/src/DotPulsar/DotPulsar.csproj b/src/DotPulsar/DotPulsar.csproj
index 2930e18..de2aa9f 100644
--- a/src/DotPulsar/DotPulsar.csproj
+++ b/src/DotPulsar/DotPulsar.csproj
@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
-    <Version>0.3.0</Version>
+    <Version>0.4.0</Version>
     <AssemblyVersion>$(Version)</AssemblyVersion>
     <FileVersion>$(Version)</FileVersion>
     <Authors>DanskeCommodities;dblank</Authors>
@@ -11,8 +11,8 @@
     <Title>DotPulsar</Title>
     <PackageTags>Apache;Pulsar</PackageTags>
     <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
-    <PackageReleaseNotes>Beta release - TLS connections and JSON Web Token authentication</PackageReleaseNotes>
-    <Description>Native .NET/C# client library for Apache Pulsar</Description>
+    <PackageReleaseNotes>Beta release - Moved to ValueTask, IAsyncDisposable and IAsyncEnumerable</PackageReleaseNotes>
+    <Description>.NET/C# client library for Apache Pulsar</Description>
     <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <PublishRepositoryUrl>true</PublishRepositoryUrl>
     <IncludeSymbols>true</IncludeSymbols>
diff --git a/src/DotPulsar/Internal/ConsumerStream.cs b/src/DotPulsar/Internal/ConsumerStream.cs
index 4c00971..776c3df 100644
--- a/src/DotPulsar/Internal/ConsumerStream.cs
+++ b/src/DotPulsar/Internal/ConsumerStream.cs
@@ -41,7 +41,7 @@
 
                     if (_firstBatch)
                     {
-                        _commandFlow.MessagePermits = (uint) Math.Ceiling(_commandFlow.MessagePermits * 0.5);
+                        _commandFlow.MessagePermits = (uint)Math.Ceiling(_commandFlow.MessagePermits * 0.5);
                         _firstBatch = false;
                     }
 
