diff --git a/examples/hellobaku/android/app/build.gradle b/examples/hellobaku/android/app/build.gradle
index c356459..a2d4bca 100644
--- a/examples/hellobaku/android/app/build.gradle
+++ b/examples/hellobaku/android/app/build.gradle
@@ -33,7 +33,7 @@
 }
 
 dependencies {
-    compile 'io.v:baku-toolkit:0.8.0'
+    compile 'io.v:baku-toolkit:0.9.0'
     compile fileTree(dir: 'libs', include: ['*.jar'])
     apk ('org.slf4j:slf4j-android:1.7.12')
 }
diff --git a/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivity.java b/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivity.java
index a87c670..d94010f 100644
--- a/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivity.java
+++ b/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivity.java
@@ -18,7 +18,7 @@
 
         final TextView txtOutput = (TextView) findViewById(R.id.displayTextView);
         // Binds the Syncbase row named "message" to displayTextView, a.k.a. txtOutput.
-        binder().key("message")
+        binder().onKey("message")
                 .bindTo(txtOutput);
 
         final EditText txtInput = (EditText) findViewById(R.id.inputEditText);
diff --git a/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityALaCarte.java b/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityALaCarte.java
index 5326e7c..ef06d2f 100644
--- a/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityALaCarte.java
+++ b/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityALaCarte.java
@@ -11,7 +11,7 @@
 
 import io.v.baku.toolkit.VAndroidContextMixin;
 import io.v.baku.toolkit.VAndroidContextTrait;
-import io.v.baku.toolkit.bind.SyncbaseBinding;
+import io.v.baku.toolkit.bind.BindingBuilder;
 import io.v.rx.syncbase.RxAndroidSyncbase;
 import io.v.rx.syncbase.RxDb;
 import io.v.rx.syncbase.RxTable;
@@ -39,15 +39,15 @@
 
         // We want this data binding to share the lifecycle of the Activity from onCreate to
         // onDestroy, so keep track of its Subscription and unsubscribe in onDestroy.
-        mActivityDataBindings = SyncbaseBinding.builder()
+        final BindingBuilder builder = new BindingBuilder()
                 .activity(vActivity)
-                .rxTable(db.rxTable("t"))
+                .rxTable(db.rxTable("t"));
 
-                // Binds the Syncbase row named "message" to displayTextView, a.k.a. txtOutput.
-                .key("message")
-                .bindTo(txtOutput)
+        mActivityDataBindings = builder.getAllBindings();
 
-                .getAllBindings();
+        // Binds the Syncbase row named "message" to displayTextView, a.k.a. txtOutput.
+        builder.onKey("message")
+                .bindTo(txtOutput);
 
         final EditText txtInput = (EditText) findViewById(R.id.inputEditText);
         findViewById(R.id.actionButton).setOnClickListener(bn -> {
diff --git a/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityComposition.java b/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityComposition.java
index 8c9a084..d5c63e8 100644
--- a/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityComposition.java
+++ b/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityComposition.java
@@ -24,7 +24,7 @@
 
         final TextView txtOutput = (TextView) findViewById(R.id.displayTextView);
         // Binds the Syncbase row named "message" to displayTextView, a.k.a. txtOutput.
-        mBaku.binder().key("message")
+        mBaku.binder().onKey("message")
                 .bindTo(txtOutput);
 
         final EditText txtInput = (EditText) findViewById(R.id.inputEditText);
diff --git a/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityOneWay.java b/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityOneWay.java
index 6b8147b..71a21be 100644
--- a/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityOneWay.java
+++ b/examples/hellobaku/android/app/src/main/java/io/v/baku/hellobaku/HelloActivityOneWay.java
@@ -20,7 +20,7 @@
         setContentView(R.layout.activity_hello);
 
         // Binds the Syncbase row named "message" to displayTextView, read-only
-        binder().key("message")
+        binder().onKey("message")
                 .bindReadOnly(R.id.displayTextView);
 
         final EditText txtInput = (EditText) findViewById(R.id.inputEditText);
