diff --git a/Makefile b/Makefile
index 082092b..48ce1b8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 PWD=$(shell pwd)
-DART_FILES = $(shell find $(PWD)/dart -name *.dart ! -name *.part.dart)
+DART_FILES=$(shell find $(PWD)/dart -name *.dart ! -name *.part.dart)
 V23_GOPATH=$(shell echo `v23 run env | grep GOPATH | cut -d\= -f2`)
 
 ifndef MOJO_DIR
@@ -90,7 +90,7 @@
 	$(call MOJOM_GEN,$<,gen,go)
 	gofmt -w $@
 
-gen/mojo/echo_server.mojo: go/src/echo_server.go $(MOJO_SHARED_LIB)
+gen/mojo/echo_server.mojo: go/src/echo_server.go gen-mojom $(MOJO_SHARED_LIB)
 	$(call MOGO_BUILD,$<,$@)
 
 # Check that the dart-style is being met. Note: Comments are ignored when
diff --git a/README.md b/README.md
index a30c93f..b9353e3 100644
--- a/README.md
+++ b/README.md
@@ -6,23 +6,23 @@
 
 ## Initial Mojo setup
 
-You must have the Mojo repo in $MOJO_DIR.
+You must have the Mojo repo in `$MOJO_DIR`.
 
 This section only needs to be run once.
 
-See the [mojo readme] for more comprehensive instructions.
+See the [Mojo readme] for more comprehensive instructions.
 
 ### Install Mojo prereqs
 
 1. Install [depot tools].
 2. Install [Goma][goma].
-3. Put the following in your .bashrc:
+3. Put the following in your `.bashrc`:
 
-    # NOTE: Actual locations depend on where you installed depot_tools and goma.
-    export PATH=${PATH}:${HOME}/dev/depot_tools
-    export GOMA_DIR=${HOME}/goma
-
-    export MOJO_DIR=${HOME}/mojo
+       # NOTE: Actual locations depend on where you installed depot_tools and
+       # goma.
+       export PATH=${PATH}:${HOME}/dev/depot_tools
+       export GOMA_DIR=${HOME}/goma
+       export MOJO_DIR=${HOME}/mojo
 
 ### Download Mojo repo
 
@@ -33,6 +33,9 @@
 
     # NOTE: This step also takes about 10 min.  Furthermore, the script uses
     # 'sudo', so you will need to enter your password.
+    $ cd src && ./build/install-build-deps.sh
+
+    # Or, to include Android deps as well:
     $ cd src && ./build/install-build-deps-android.sh
 
 ## Update Mojo and compile resources
@@ -44,20 +47,28 @@
 
 1. Start by updating the repo.
 
-    $ cd $MOJO_DIR/src
-    $ git checkout master
-    $ git pull
-    $ gclient sync
+       $ cd $MOJO_DIR/src
+       $ git checkout master
+       $ git pull
+       $ gclient sync
 
-2. Compile for Linux.  Built resources will be in $MOJO_DIR/src/out/Debug
+2. Compile for Linux.  Built resources will be in `$MOJO_DIR/src/out/Debug`
 
-    $ ./mojo/tools/mojob.py gn
-    $ ./mojo/tools/mojob.py build # NOTE: This can take up to 10 minutes.
+       $ ./mojo/tools/mojob.py gn
+       $ ./mojo/tools/mojob.py build # NOTE: This can take up to 10 minutes.
 
-3. Compile for Android.  Built resources will be in $MOJO_DIR/src/out/android_Debug
+3. Compile for Android.  Built resources will be in
+   `$MOJO_DIR/src/out/android_Debug`
 
-    $ ./mojo/tools/mojob.py gn --android
-    $ ./mojo/tools/mojob.py build --android # NOTE: This can take up to 10 minutes.
+       $ ./mojo/tools/mojob.py gn --android
+       $ ./mojo/tools/mojob.py build --android # NOTE: This can take up to 10 minutes.
+
+## Install Dart SDK
+
+To run Dart apps, you must install the Dart SDK.
+
+Googlers: http://go/install-dart
+External: https://www.dartlang.org/downloads/
 
 [architecture proposal]: https://docs.google.com/document/d/1TyxPYIhj9VBCtY7eAXu_MEV9y0dtRx7n7UY4jm76Qq4/edit
 [depot tools]: http://www.chromium.org/developers/how-tos/install-depot-tools
diff --git a/mojom/syncbase.mojom b/mojom/syncbase.mojom
index 6a18c04..6fd799b 100644
--- a/mojom/syncbase.mojom
+++ b/mojom/syncbase.mojom
@@ -4,7 +4,7 @@
 // TODO(sadovsky): Put structs in a separate types.mojom file.
 // TODO(sadovsky): Loose representation of verror. Improve this.
 struct Error {
-  string id;
+  string id;  // empty string means no error
   uint32 action_code;
   string msg;
 };
@@ -36,6 +36,25 @@
   uint8 sync_priority;
 };
 
+struct Result {
+  array<array<uint8>> values;
+};
+
+interface ExecStream {
+  OnResult(Result result);
+  OnDone(Error err);
+};
+
+struct KeyValue {
+  string key;
+  array<uint8> value;
+};
+
+interface ScanStream {
+  OnKeyValue(KeyValue key_value);
+  OnDone(Error err);
+};
+
 // TODO(sadovsky): Add schema version to all RPCs. See v.io/c/13734.
 // All 'name' params are service-relative object names.
 
@@ -64,8 +83,7 @@
   DbCreate(string name, Perms perms) => (Error err);
   DbDelete(string name) => (Error err);
   DbExists(string name) => (Error err, bool exists);
-  // TODO(sadovsky): Figure out how to stream back replies.
-  DbExec(string query) => (Error err);
+  DbExec(string query, ExecStream& stream) => (Error err);
   DbBeginBatch(string name, BatchOptions? bo) => (Error err, string batch_dn);
   DbCommit(string name) => (Error err);
   DbAbort(string name) => (Error err);
@@ -105,8 +123,9 @@
   TableExists(string name) => (Error err, bool exists);
   TableDeleteRowRange(string name, array<uint8> start, array<uint8> limit)
       => (Error err);
-  // TODO(sadovsky): Figure out how to stream back replies.
-  TableScan(string name, array<uint8> start, array<uint8> limit) => (Error err);
+  TableScan(
+      string name, array<uint8> start, array<uint8> limit, ScanStream& stream)
+      => (Error err);
   TableGetPermissions(string name, string key)
       => (Error err, array<PrefixPerms> perms_arr);
   TableSetPermissions(string name, string prefix, Perms perms) => (Error err);
