diff --git a/Makefile b/Makefile
index 2901a8c..fa24d44 100644
--- a/Makefile
+++ b/Makefile
@@ -108,6 +108,7 @@
 syncbaseAndroidDataModel  = syncbase/guides/data-model
 syncbaseAndroidDataFlow   = syncbase/guides/data-flow
 syncbaseAndroidDataSync   = syncbase/guides/synchronization
+syncbaseAndroidBatches    = syncbase/guides/batches
 
 # Scripts that 'complete' the named tutorials, creating all relevant files
 # (code, credentials, etc.) but skipping ephemeral steps like starting servers,
@@ -381,16 +382,13 @@
 
 # An ordering that lets us test all the Java tutorials faster than running the
 # individual tests in sequence.
-depsOneBigJavaTutorialTest = \
-	content/$(tutJavaFortune).md \
-	content/$(tutJavaAndroid).md
-
 depsOneBigSyncbaseAndroidTest = \
 	content/$(syncbaseAndroidQuickstart).md \
 	content/$(syncbaseAndroidFirstApp).md \
 	content/$(syncbaseAndroidDataModel).md \
 	content/$(syncbaseAndroidDataFlow).md \
-	content/$(syncbaseAndroidDataSync).md
+	content/$(syncbaseAndroidDataSync).md \
+	content/$(syncbaseAndroidBatches).md
 
 .PHONY: test
 test: test-site test-tutorials-core test-tutorials-java test-syncbase-android
@@ -445,3 +443,30 @@
 .PHONY: test-tutorials-no-install
 test-tutorials-no-install: build
 	$(MDRIP) --subshell test $(depsOneBigCoreTutorialTest)
+
+# Used to upgrade all occurrences of
+# dependencies {
+#  compile 'io.v:syncbase:<version>'
+# }
+# to the constant $SYNCBASE_ANDROID_VERSION defined below.
+#
+# This target should be used as part of the release process to update
+# the website to the stable release of Syncbase Android.
+#
+# Please run the `test-syncbase-android` after upgrade and fix
+# any breaking API changes in the tutorials and code snippets before
+# committing and submitting the changes.
+#
+# Example flow:
+#
+# # Change SYNCBASE_ANDROID_VERSION to the newest version.
+# make upgrade-syncbase-android
+# make test-syncbase-android
+# git stage .
+# git commit -m "Upgrading Syncbase Android Version"
+# jiri cl mail
+.PHONY: upgrade-syncbase-android
+# Change this to the desired version before running the target.
+SYNCBASE_ANDROID_VERSION=0.1.4
+upgrade-syncbase-android:
+	find content/syncbase -type f -exec sed -i "s/\(compile 'io.v:syncbase:\)\(.*\)'/\1$(SYNCBASE_ANDROID_VERSION)'/g" {} \;
\ No newline at end of file
diff --git a/content/syncbase/guides/batches.md b/content/syncbase/guides/batches.md
index 5beaf2b..7a24cf2 100644
--- a/content/syncbase/guides/batches.md
+++ b/content/syncbase/guides/batches.md
@@ -5,6 +5,27 @@
 toc: true
 = yaml =
 
+{{# helpers.hidden }}
+<!-- @setupEnvironment @test -->
+```
+export PROJECT_DIR=$(mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX")
+export FILE=$PROJECT_DIR/app/src/main/java/io/v/syncbase/example/Batches.java
+cp -r $JIRI_ROOT/website/tools/android_project_stubs/example/* $PROJECT_DIR
+cat - <<EOF >> $PROJECT_DIR/app/build.gradle
+dependencies {
+  compile 'io.v:syncbase:0.1.4'
+}
+EOF
+cat - <<EOF > $FILE
+package io.v.syncbase.example;
+import io.v.syncbase.*;
+public class Batches {
+  Database db;
+  void main() {
+EOF
+```
+{{/ helpers.hidden }}
+
 # Introduction
 
 A batch is a group of read and write operations that are logically related.
@@ -47,7 +68,6 @@
 data from multiple collections, peers will receive only the parts of the batch
 they are allowed to see.
 
-
 # Using Batches
 
 `BatchDatabase` is the entry point to the batch API. `BatchDatabase` is similar to
@@ -61,7 +81,9 @@
 It detects *concurrent batch* errors and handles retries and commit/aborts
 automatically.
 
+<!-- @runInBatch @test -->
 ```Java
+cat - <<EOF | sed 's/{{.*}}//' >> $FILE
 db.runInBatch(new Database.BatchOperation() {
   @Override
   public void run(BatchDatabase batchDb) {
@@ -74,6 +96,7 @@
     // No need to commit. RunInBatch will commit and retry if necessary.
   }
 }, new Database.BatchOptions());
+EOF
 ```
 
 {{# helpers.warning }}
@@ -86,7 +109,17 @@
 **The following code snippet demonstrates the *WRONG* way of using batches.**
 {{/ helpers.warning }}
 
+{{# helpers.hidden }}
+<!-- @newScopeStart @test -->
+```
+cat - <<EOF >> $FILE
+{
+EOF
+```
+{{/ helpers.hidden }}
+<!-- @runInBatchWrong @test -->
 ```Java
+cat - <<EOF | sed 's/{{.*}}//' >> $FILE
 // WRONG: c1 is NOT part of the batch.
 final Collection c1 = db.collection("collection1");
 {{# helpers.codedim }}
@@ -105,14 +138,33 @@
     }
 }, new Database.BatchOptions());
 {{/ helpers.codedim }}
+EOF
 ```
+{{# helpers.hidden }}
+<!-- @newScopeEnd @test -->
+```
+cat - <<EOF >> $FILE
+}
+EOF
+```
+{{/ helpers.hidden }}
 
 ### BeginBatch
 `BeginBatch` is an alternative approach to starting a batch operation. Unlike
 `RunInBatch`, it does not manage retries and commit/aborts. They are left
 to the developers to manage themselves.
 
+{{# helpers.hidden }}
+<!-- @newScopeStart @test -->
+```
+cat - <<EOF >> $FILE
+{
+EOF
+```
+{{/ helpers.hidden }}
+<!-- @beginBatch @test -->
 ```Java
+cat - <<EOF | sed 's/{{.*}}//' >> $FILE
 BatchDatabase batchDb = db.beginBatch(new Database.BatchOptions());
 
 Collection c1 = batchDb.collection("collection1");
@@ -122,7 +174,16 @@
 c2.put("myKey", "myValue");
 
 batchDb.commit();
+EOF
 ```
+{{# helpers.hidden }}
+<!-- @newScopeEnd @test -->
+```
+cat - <<EOF >> $FILE
+}
+EOF
+```
+{{/ helpers.hidden }}
 
 {{# helpers.warning }}
 ## Warning
@@ -132,7 +193,17 @@
 **The following code snippet demonstrates the *WRONG* way of using batches.**
 {{/ helpers.warning }}
 
+{{# helpers.hidden }}
+<!-- @newScopeStart @test -->
+```
+cat - <<EOF >> $FILE
+{
+EOF
+```
+{{/ helpers.hidden }}
+<!-- @beginBatch @test -->
 ```Java
+cat - <<EOF | sed 's/{{.*}}//' >> $FILE
 // WRONG: c1 is NOT part of the batch.
 Collection c1 = db.collection("collection1");
 {{# helpers.codedim }}
@@ -151,8 +222,16 @@
 
 // WRONG: Throws exception since c2 is from an already committed batch.
 c2.put("myKey", "myValue");
-
+EOF
 ```
+{{# helpers.hidden }}
+<!-- @newScopeEnd @test -->
+```
+cat - <<EOF >> $FILE
+}
+EOF
+```
+{{/ helpers.hidden }}
 
 # Summary
 
@@ -160,4 +239,15 @@
 * Use the recommended `runInBatch` method to perform batch operations to
 get the added benefit of automatic retries and commit/abort.
 * Ensure all collection references are obtained from `BatchDatabase` otherwise
-mutations may not be part of a batch.
\ No newline at end of file
+mutations may not be part of a batch.
+
+{{# helpers.hidden }}
+<!-- @compileSnippets_mayTakeMinutes @test -->
+```
+cat - <<EOF >> $FILE
+  }
+}
+EOF
+cd $PROJECT_DIR && ./gradlew assembleRelease
+```
+{{/ helpers.hidden }}
\ No newline at end of file
diff --git a/content/syncbase/guides/data-flow.md b/content/syncbase/guides/data-flow.md
index 0851d6e..e14bf12 100644
--- a/content/syncbase/guides/data-flow.md
+++ b/content/syncbase/guides/data-flow.md
@@ -9,13 +9,14 @@
 <!-- @setupEnvironment @test -->
 ```
 export PROJECT_DIR=$(mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX")
+export FILE=$PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataFlow.java
 cp -r $JIRI_ROOT/website/tools/android_project_stubs/example/* $PROJECT_DIR
 cat - <<EOF >> $PROJECT_DIR/app/build.gradle
 dependencies {
   compile 'io.v:syncbase:0.1.4'
 }
 EOF
-cat - <<EOF > $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataFlow.java
+cat - <<EOF > $FILE
 package io.v.syncbase.example;
 import io.v.syncbase.*;
 import java.util.HashMap;
@@ -60,7 +61,7 @@
 
 <!-- @addWatchHandler @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataFlow.java
+cat - <<EOF >> $FILE
 db.addWatchChangeHandler(new Database.WatchChangeHandler() {
 
   @Override
@@ -95,7 +96,7 @@
 {{# helpers.hidden }}
 <!-- @closeMainFunction @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataFlow.java
+cat - <<EOF >> $FILE
   }
 EOF
 ```
@@ -104,7 +105,7 @@
 Modeling our in-memory state as a map of Todolist-Id to a map of (Task-Id, Task)
 <!-- @updateState @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataFlow.java
+cat - <<EOF >> $FILE
 HashMap<String, Map<String, Task>> state = new HashMap<String, Map<String, Task>>();
 
 // Update the state based on the changes.
@@ -149,7 +150,7 @@
 {{# helpers.hidden }}
 <!-- @compileSnippets_mayTakeMinues @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataFlow.java
+cat - <<EOF >> $FILE
 }
 EOF
 cd $PROJECT_DIR && ./gradlew assembleRelease
diff --git a/content/syncbase/guides/data-model.md b/content/syncbase/guides/data-model.md
index a2aad2a..5191d3f 100644
--- a/content/syncbase/guides/data-model.md
+++ b/content/syncbase/guides/data-model.md
@@ -9,13 +9,14 @@
 <!-- @setupEnvironment @test -->
 ```
 export PROJECT_DIR=$(mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX")
+export FILE=$PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataModel.java
 cp -r $JIRI_ROOT/website/tools/android_project_stubs/example/* $PROJECT_DIR
 cat - <<EOF >> $PROJECT_DIR/app/build.gradle
 dependencies {
   compile 'io.v:syncbase:0.1.4'
 }
 EOF
-cat - <<EOF > $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataModel.java
+cat - <<EOF > $FILE
 package io.v.syncbase.example;
 import io.v.syncbase.*;
 import java.util.ArrayList;
@@ -50,7 +51,7 @@
 
 <!-- @createDatabase @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataModel.java
+cat - <<EOF >> $FILE
 Syncbase.DatabaseOptions options = new Syncbase.DatabaseOptions();
 // dbOpt.cloudSyncbaseAddress = "<Your Cloud Syncbase Address>";
 // dbOpt.cloudSyncbaseBlessing = "<Your Cloud Syncbase Blessing>";
@@ -98,7 +99,7 @@
 
 <!-- @createCollection @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataModel.java
+cat - <<EOF >> $FILE
 String collectionName = UUID.randomUUID().toString();
 Collection collection = db.collection(collectionName);
 
@@ -148,7 +149,7 @@
 
 <!-- @addPojoToCollection @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataModel.java
+cat - <<EOF >> $FILE
 class MyPojo {
   String foo;
   Integer bar;
@@ -250,7 +251,7 @@
 {{# helpers.hidden }}
 <!-- @compileSnippets_mayTakeMinutes @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataModel.java
+cat - <<EOF >> $FILE
   }
 }
 EOF
diff --git a/content/syncbase/guides/synchronization.md b/content/syncbase/guides/synchronization.md
index 779dcf3..6f0ec16 100644
--- a/content/syncbase/guides/synchronization.md
+++ b/content/syncbase/guides/synchronization.md
@@ -9,13 +9,14 @@
 <!-- @setupEnvironment @test -->
 ```
 export PROJECT_DIR=$(mktemp -d "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX")
+export FILE=$PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataSync.java
 cp -r $JIRI_ROOT/website/tools/android_project_stubs/example/* $PROJECT_DIR
 cat - <<EOF >> $PROJECT_DIR/app/build.gradle
 dependencies {
   compile 'io.v:syncbase:0.1.4'
 }
 EOF
-cat - <<EOF > $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataSync.java
+cat - <<EOF > $FILE
 package io.v.syncbase.example;
 import io.v.syncbase.*;
 import java.util.Iterator;
@@ -78,7 +79,7 @@
 syncgroup:
 <!-- @inviteUser @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataSync.java
+cat - <<EOF >> $FILE
 Collection collectionToShare = db.collection("myCollection");
 
 collectionToShare.getSyncgroup().inviteUser(userToInvite, AccessList.AccessLevel.READ);
@@ -88,7 +89,7 @@
 On the invitee side, we need to handle invite requests by registering a handler:
 <!-- @addInviteHandler @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataSync.java
+cat - <<EOF >> $FILE
 db.addSyncgroupInviteHandler(new Database.SyncgroupInviteHandler() {
   @Override
   public void onInvite(SyncgroupInvite invite) {
@@ -125,7 +126,7 @@
 
 <!-- @unshareCollection @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataSync.java
+cat - <<EOF >> $FILE
 Collection sharedCollection = db.collection("myCollection");
 
 sharedCollection.getSyncgroup().ejectUser(userToRemove);
@@ -144,7 +145,7 @@
 
 <!-- @getAllSyncgroups @test -->
 ```Java
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataSync.java
+cat - <<EOF >> $FILE
 Iterator<Syncgroup> allSyncgroups = db.getSyncgroups();
 while(allSyncgroups.hasNext()) {
     Syncgroup sg = allSyncgroups.next();
@@ -166,7 +167,7 @@
 {{# helpers.hidden }}
 <!-- @compileSnippets_mayTakeMinutes @test -->
 ```
-cat - <<EOF >> $PROJECT_DIR/app/src/main/java/io/v/syncbase/example/DataSync.java
+cat - <<EOF >> $FILE
   }
 }
 EOF
