diff --git a/README.md b/README.md
index 745f21c..c15bc26 100644
--- a/README.md
+++ b/README.md
@@ -75,7 +75,7 @@ In order to capture the Appwrite OAuth callback url, the following activity need
                 <action android:name="android.intent.action.VIEW" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.BROWSABLE" />
-                <data android:scheme="appwrite-callback-[PROJECT_ID]" />
+                <data android:scheme="appwrite-callback-<PROJECT_ID>" />
             </intent-filter>
         </activity>
     </application>
@@ -91,8 +91,8 @@ import io.appwrite.Client
 import io.appwrite.services.Account
 
 val client = Client(context)
-  .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
-  .setProject("5df5acd0d48c2") // Your project ID
+  .setEndpoint("https://<HOSTNAME_OR_IP>/v1") // Your API Endpoint
+  .setProject("<PROJECT_ID>") // Your project ID
   .setSelfSigned(true) // Remove in production
 ```
 
@@ -123,8 +123,8 @@ import io.appwrite.services.Account
 import io.appwrite.ID
 
 val client = Client(context)
-  .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
-  .setProject("5df5acd0d48c2") // Your project ID
+  .setEndpoint("https://<HOSTNAME_OR_IP>/v1") // Your API Endpoint
+  .setProject("<PROJECT_ID>") // Your project ID
   .setSelfSigned(true) // Remove in production
 
 val account = Account(client)
@@ -136,7 +136,79 @@ val user = account.create(
 )
 ```
 
+### Type Safety with Models
+
+The Appwrite Android SDK provides type safety when working with database documents through generic methods. Methods like `listDocuments`, `getDocument`, and others accept a `nestedType` parameter that allows you to specify your custom model type for full type safety.
+
+```kotlin
+data class Book(
+    val name: String,
+    val author: String,
+    val releaseYear: String? = null,
+    val category: String? = null,
+    val genre: List<String>? = null,
+    val isCheckedOut: Boolean
+)
+
+val databases = Databases(client)
+
+try {
+    val documents = databases.listDocuments(
+        databaseId = "your-database-id",
+        collectionId = "your-collection-id",
+        nestedType = Book::class.java // Pass in your custom model type
+    )
+    
+    for (book in documents.documents) {
+        Log.d("Appwrite", "Book: ${book.name} by ${book.author}") // Now you have full type safety
+    }
+} catch (e: AppwriteException) {
+    Log.e("Appwrite", e.message ?: "Unknown error")
+}
+```
+
+**Tip**: You can use the `appwrite types` command to automatically generate model definitions based on your Appwrite database schema. Learn more about [type generation](https://appwrite.io/docs/products/databases/type-generation).
+
+### Working with Model Methods
+
+All Appwrite models come with built-in methods for data conversion and manipulation:
+
+**`toMap()`** - Converts a model instance to a Map format, useful for debugging or manual data manipulation:
+```kotlin
+val account = Account(client)
+val user = account.get()
+val userMap = user.toMap()
+Log.d("Appwrite", userMap.toString()) // Prints all user properties as a Map
+```
+
+**`from(map:, nestedType:)`** - Creates a model instance from a Map, useful when working with raw data:
+```kotlin
+val userData: Map<String, Any> = mapOf(
+    "\$id" to "123",
+    "name" to "John",
+    "email" to "john@example.com"
+)
+val user = User.from(userData, User::class.java)
+```
+
+**JSON Serialization** - Models can be easily converted to/from JSON using Gson (which the SDK uses internally):
+```kotlin
+import com.google.gson.Gson
+
+val account = Account(client)
+val user = account.get()
+
+// Convert to JSON
+val gson = Gson()
+val jsonString = gson.toJson(user)
+Log.d("Appwrite", "User JSON: $jsonString")
+
+// Convert from JSON
+val userFromJson = gson.fromJson(jsonString, User::class.java)
+```
+
 ### Error Handling
+
 The Appwrite Android SDK raises an `AppwriteException` object with `message`, `code` and `response` properties. You can handle any errors by catching `AppwriteException` and present the `message` to the user or handle it yourself based on the provided error information. Below is an example.
 
 ```kotlin
