diff --git a/README.md b/README.md
index a46483b3..3e3ee92d 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,84 @@
+
+
+
+
# MQTTnet
MQTTnet is a .NET library for MQTT based communication. It provides a MQTT client and a MQTT server.
+
+# MqttClient
+## Example
+
+```c#
+var options = new MqttClientOptions
+{
+ Server = "localhost"
+};
+
+var client = new MqttClientFactory().CreateMqttClient(options);
+client.ApplicationMessageReceived += (s, e) =>
+{
+ Console.WriteLine("### RECEIVED APPLICATION MESSAGE ###");
+ Console.WriteLine($"+ Topic = {e.ApplicationMessage.Topic}");
+ Console.WriteLine($"+ Payload = {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
+ Console.WriteLine($"+ QoS = {e.ApplicationMessage.QualityOfServiceLevel}");
+ Console.WriteLine($"+ Retain = {e.ApplicationMessage.Retain}");
+ Console.WriteLine();
+};
+
+client.Connected += async (s, e) =>
+{
+ Console.WriteLine("### CONNECTED WITH SERVER ###");
+
+ await client.SubscribeAsync(new List
+ {
+ new TopicFilter("#", MqttQualityOfServiceLevel.AtMostOnce)
+ });
+
+ Console.WriteLine("### SUBSCRIBED ###");
+};
+
+client.Disconnected += async (s, e) =>
+{
+ Console.WriteLine("### DISCONNECTED FROM SERVER ###");
+ await Task.Delay(TimeSpan.FromSeconds(5));
+
+ try
+ {
+ await client.ConnectAsync();
+ }
+ catch
+ {
+ Console.WriteLine("### RECONNECTING FAILED ###");
+ }
+};
+
+try
+{
+ await client.ConnectAsync();
+}
+catch
+{
+ Console.WriteLine("### CONNECTING FAILED ###");
+}
+
+Console.WriteLine("### WAITING FOR APPLICATION MESSAGES ###");
+
+while (true)
+{
+ Console.ReadLine();
+
+ var applicationMessage = new MqttApplicationMessage(
+ "A/B/C",
+ Encoding.UTF8.GetBytes("Hello World"),
+ MqttQualityOfServiceLevel.AtLeastOnce,
+ false
+ );
+
+ await client.PublishAsync(applicationMessage);
+}
+```
+
+# MqttServer
+
+## Example
+TBD